SQL Server は DateTime
を保存しません 任意の文字列形式 - 8 バイトの数値として保存されます。
さまざまな設定 (言語、日付形式) は、DateTime
の方法にのみ影響します。 SQL Server Management Studio に表示されます。または、文字列を DateTime
に変換しようとしたときにどのように解析されるか .
SQL Server では多くの形式がサポートされています。CAST および変換 .これらの形式のほとんどは依存です つまり、これらの設定が機能する場合と機能しない場合があります。
これを解決するには、ISO-8601 日付形式を使用します SQL Server でサポートされている - この形式は常に機能します - SQL Server の言語と日付形式の設定に関係なく。
ISO-8601 形式 は SQL Server でサポートされており、次の 2 つの種類があります:
YYYYMMDD
日付のみ (時間部分なし) - ここに注意してください:ダッシュなし! 、それは非常に重要です!YYYY-MM-DD
ではない SQL Server の dateformat 設定とは無関係であり、しない あらゆる状況で機能します!
または:
YYYY-MM-DDTHH:MM:SS
日付と時刻 - ここに注意してください:この形式は
これは、SQL Server 2000 以降で有効です。
SQL Server 2008 と DATE
を使用する場合 データ型 (DATE
のみ - しない DATETIME
!)、実際に YYYY-MM-DD
も使用できます 形式であり、SQL Server のどの設定でも機能します。
なぜこのトピック全体がそれほどトリッキーでややこしいのか、私に聞かないでください。しかし、YYYYMMDD
では SQL Server のどのバージョンでも、SQL Server の言語と日付形式の設定でも問題ありません。