SQLServerでサポートされている形式は多数あります。 MSDNBooksOnlineを参照してください。>キャストコード> および
CONVERT
。これらの形式のほとんどは依存です どの設定を使用しているか(したがって、これらの設定が機能する場合と機能しない場合があります)。
これを解決する方法は、(少し適合した)ISO-8601日付形式を使用することです。 これはSQLServerでサポートされています-この形式は常に機能します -SQLServerの言語と日付形式の設定に関係なく。
ISO-8601形式 SQLServerでサポートされているのは2つの種類があります。
-
YYYYMMDD
日付のみ(時間部分なし)。ここに注意してください:ダッシュはありません! 、それは非常に重要です!YYYY-MM-DD
ない SQL Serverの日付形式の設定とは無関係であり、しない あらゆる状況で機能します!
または:
-
YYYY-MM-DDTHH:MM:SS
日付と時刻について-ここに注意してください:この形式はあります ダッシュ(ただし、できます 省略)、および固定のT
DATETIME
の日付と時刻の部分の間の区切り文字として 。
これはSQLServer2000以降で有効です。
SQLServer2008以降とDATE
を使用している場合 データ型( DATE
のみ -ない DATETIME
!)、実際に YYYY-MM-DD
を使用することもできます 形式であり、SQLServerのどの設定でも機能します。
このトピック全体が非常にトリッキーでやや混乱している理由を私に聞かないでください-それはまさにその通りです。しかし、 YYYYMMDD
形式であれば、SQL Serverのすべてのバージョン、およびSQLServerの言語と日付形式の設定に問題はありません。
SQL Server 2008以降の推奨事項は、 DATE
を使用することです。 日付部分のみが必要な場合、および DATETIME2(n)
日付と時刻の両方が必要な場合。 DATETIME
の段階的廃止を開始する必要があります 可能であればデータ型