SQL Server はDateTime
任意の文字列形式で a を保存しません。これは 8 バイトの数値として保存されます。
さまざまな設定 (言語、日付形式)DateTime
は、SQL Server Management Studio での の表示方法、または文字列を に変換する際の解析方法にのみ影響しますDateTime
。
SQL Server では多くの形式がサポートされています。CAST および CONVERT については、MSDN Books Online を参照してください。これらの形式のほとんどは、使用している設定に依存します。したがって、これらの設定が機能する場合と機能しない場合があります。
これを解決する方法は、SQL Server でサポートされている (少し変更された) ISO-8601 日付形式を使用することです。この形式は、SQL Server の言語と日付形式の設定に関係なく、常に機能します。
ISO-8601 形式は SQL Server でサポートされており、次の 2 つの形式があります。
YYYYMMDD
日付のみ (時間部分なし)。ここに注意してください:ダッシュはありません! 、それは非常に重要です! SQL Server の dateformat 設定とは無関係ではなく、すべての状況で機能するとは限りYYYY-MM-DD
ません!
また:
YYYY-MM-DDTHH:MM:SS
日付と時刻 - ここに注意してください: この形式にはダッシュ (ただし、省略可能T
) があり、DATETIME
.
これは、SQL Server 2000 以降で有効です。
SQL Server 2008 以降とDATE
データ型 (のみDATE
-ではなく DATETIME
!) を使用する場合、実際にYYYY-MM-DD
形式も使用でき、SQL Server の任意の設定でも機能します。
なぜこのトピック全体が非常にトリッキーでやや混乱するのか、私に聞かないでください。ただし、このYYYYMMDD
形式では、SQL Server のどのバージョンでも、SQL Server の言語と日付形式の設定でも問題ありません。
したがって、具体的なケースでは、次を使用してみてください。
INSERT INTO Inv_Dueno_Equipo (Cod_Usuario,Fecha_Inicio,Fecha_Termino,Codigo_Equipo)
VALUES (1, '20120126', '20120131', 1);
そして、あなたはそれで大丈夫なはずです。