時計

 以前、当ブログうるう秒のことについて書いたことがあります。もう2年以上前のことなので、何を書いたかも忘れています(^^ゞ

 さて、そのうるう秒ですが、またやってきます。それは今年の2015年6月30日です。この日は23時59分60秒まであることになります(通常は23時59分59秒まで)。

 通常では23時59分60秒何て時間は存在しないのですが、この時間はデーターベスに保存ができるのでしょうか?よくMySQLやpostgreSQLなどの有名処のDBでは検証が行われていたりしますが、私の得意とするMS Accessはどうなのかをチェックしてみました。

 Accessのテーブルではデータ型を「日付/時刻型」という型に設定することで日時を登録することができます。この型のカラムを設定し、実際に「2015/06/30 23:59:60」を入力してみました。

「2015/06/30 23:59:60」と入力するとエラー

「2015/06/30 23:59:60」と入力するとエラー

 結果は見ての通りエラーで怒られてしまいました。つまり、Accessではうるう秒を登録することができないのです。けど、うるう秒は存在します。ログなどで「2015/06/30 23:59:60」を書き込む必要がでた場合はどうなるのでしょうか?

 そこで、ちょっと調べてみました。するとMicrosoftのサイトで下記のようなページを見つけました。

うるう秒に関するサポートについて

 このページ内では下記のように書かれています。

Windows オペレーティングシステムでは、うるう秒の処理をおこないません。

 OSのことを書かれていますが、ログなどで時間を取得するのはOSです。そのOSがうるう秒を扱わないと言うことなので、「2015/06/30 23:59:60」でログが入力されることはないということになります。そうすると
「Windowsの時計は1秒ずれたままになるのか?」
と、思う方がいるかもしれませんが、Windowsの時計は残念ながら常にずれているような物です。その為、定期的にWindowsは時間の同期調整を行っていますので、1秒ずれたからと行って騒ぐ必要はありません。

Windowsのネットを使った自動時刻調整設定ダイアログ

Windowsのネットを使った自動時刻調整設定ダイアログ

 そうすると、自動で「2015/06/30 23:59:60」が入ることはないけど、人の手で「2015/06/30 23:59:60」と入力することはあります。しかし、先にも書いたとおり、入力するとエラーで突っ返されるのでAccessではうるう秒を登録することはできないということになります。

 たかが1秒、されど1秒。この1秒が登録できるようにするためにシステムコストが上がる方がいいのか、それともたかが1秒のためにコストアップを避ける方がいいのか、MSは後者を選んだということになるのかもしれません。Accessならこれが正解かな。

アマゾンのサーバでエラーが起こっているかもしれません。
一度ページを再読み込みしてみてください。