DATETIME
のISO-8601 (古いタイプ)はどういうわけか「壊れている」または「適応している」(バグと見なすか機能と見なすかによって異なります)-YYYYMMDD
を使用する必要があります (なし 言語設定に関係なく機能するようにするためのダッシュ)。
DATE
の場合 またはDATETIME2(n)
データ型、これは修正され、「適切な」ISO-8601形式YYYY-MM-DD
常に正しく解釈されます。
-- OK because of "adapted" ISO-8601
SET LANGUAGE GERMAN;
DECLARE @dt DATETIME='20170113';
SELECT @dt;
SELECT CAST('20170113' AS DATETIME);
SELECT CONVERT(DATETIME, '20170113');
-- OK because of DATETIME2(n)
SET LANGUAGE GERMAN;
DECLARE @dt2 DATETIME2(0) = '2017-01-13';
SELECT @dt2;
SELECT CAST('2017-01-13' AS DATETIME2(0));
SELECT CONVERT(DATETIME2(0), '2017-01-13');
これはDATETIME
の癖です 入力します(1つだけではありません...)-登録するだけで、それについて知っています-次に進みます(つまり、DATETIME
を使用しないでください もう-DATE
を使用してください またはDATETIME2(n)
代わりに-作業するのがはるかに良いです!):-)