.NET、SQLServer のうるう秒の扱い

どちらも明示的に生成しようとするとダメだが、そもそも Windows 内部ではこのような時刻が生成されないとのことで、外部システムからの連携がない限り、下で試したようなエラーにはならない。

.NET の DateTime

PS C:\tmp> [datetime]"2015/07/01 08:59:59"

2015年7月1日 8:59:59
PS C:\tmp> [datetime]"2015/07/01 08:59:60"
値 "2015/07/01 08:59:60" を型 "System.DateTime" に変換できません。エラー: "文字列で表される DateTime がカレンダー Syste
m.Globalization.GregorianCalendar でサポートされていません。"
発生場所 行:1 文字:11
+ [datetime] <<<< "2015/07/01 08:59:60"
    + CategoryInfo          : NotSpecified: (:) []、RuntimeException
    + FullyQualifiedErrorId : RuntimeException

SQLServer の DateTime

SELECT CONVERT(DateTime, '2015-07-01 08:59:59', 120)

-----------------------
2015-07-01 08:59:59.000

(1 行処理されました)
SELECT CONVERT(DateTime, '2015-07-01 08:59:60', 120)

メッセージ 242、レベル 16、状態 3、行 1
varchar データ型から datetime データ型への変換の結果、範囲外の値になりました。


Windows におけるうるう秒について