13

重複の可能性:
日付文字列を変換して検証する最良の方法

SQL Server で datetime 値を datetime 変数に代入するとき、カルチャに依存しない理由で採用するのに最適な形式とその理由は?

以下の日付は 2013 年 12 月 1 日です。

DECLARE @myDate DATETIME
SET @myDate = '2013-12-01'
SET @myDate = '20131201'
SET @myDate = '12/01/2013'
SET @myDate = '2013-12-01T00:00:00.000'
SET @myDate = '2013-12-01T00:00:00'

@myDate が type の場合DATETIME2、答えは異なりますか?

4

3 に答える 3

15

ISO 8601規格に基づいて、質問の次の 3 つの形式が有効です。

DECLARE @myDate DATETIME
SET @myDate = '20131201'
SET @myDate = '2013-12-01T00:00:00.000'
SET @myDate = '2013-12-01T00:00:00'

ISO 8601 形式を使用する利点は、それが国際標準であることです。また、この形式を使用して指定された日時値は明確です。また、この形式は、SET DATEFORMAT または SET LANGUAGE 設定の影響を受けません。

于 2012-08-28T16:19:10.563 に答える
3

これは、日付文字列を変換して検証するための最良の方法など、以前にカバーされています

ISO-8601 形式は、日付のみの場合は YYYYMMDD、日付と時刻の場合は YYYY-MM-DDTHH:mm:ss です。

ISO 形式を保証できない場合は、該当するDATEFORMATを事前に設定する必要があります。

編集

Re : まだこれを使いますかdatetime2

はい、実際、これは MSDN here で明確に述べられています。精度が 100ns に向上したため、ISO 8601 形式はYYYY-MM-DDTHH:mm:ss[.nnnnnnn]

于 2012-08-28T16:17:55.443 に答える
-2

SET @myDate = '2013-12-01T00:00:00.000'

SET @myDate = '2013-12-01T00:00:00'

SET @myDate = '2013-12-01'

これらはISO 8601に準拠した正しい形式です

于 2012-08-28T16:13:16.460 に答える