datetime
変数の値を設定すると、曜日と月が切り替わります。例えばSQL Serverでdatetime変数の値を設定するときのT-SQLの置き換え2017
:
declare @date datetime = '2017-12-02 14:56:24.000'
select datepart(month,@date)
結果は12であるべきであるが、それは2問題はSQLサーバ2017に戻る2016 12
datetime
変数の値を設定すると、曜日と月が切り替わります。例えばSQL Serverでdatetime変数の値を設定するときのT-SQLの置き換え2017
:
declare @date datetime = '2017-12-02 14:56:24.000'
select datepart(month,@date)
結果は12であるべきであるが、それは2問題はSQLサーバ2017に戻る2016 12
に同じコードが存在する問題の唯一の存在SQL Server 2017で同じコードが返されます。
これはSQL Serverのバージョンに依存しません。の設定:
SET DATEFORMAT ymd;
declare @date datetime = '2017-12-02 14:56:24.000';
select datepart(month,@date);
-- 12
SET DATEFORMAT ydm;
declare @date2 datetime = '2017-12-02 14:56:24.000';
select datepart(month,@date2);
-- 2
これを回避するために、私は文化の独立ISO-8601日付形式を使用することをお勧めします。
declare @date datetime = '2017-12-02T14:56:24.000';
またはmarc_sとしてDATETIME2
に変更データ型を提案:
DECLARE @date DATETIME2 = '2017-12-02 14:56:24.000';
あるいは、DATETIMEの代わりに 'DATETIME2(n)'を使用してください - SQL Server ** 2008 **以降の推奨事項.... –
言語または他の接続設定に敏感ではないの形式を使用します - として@ lad2025が示唆している。これをより良く理解するには、[this](http://karaszi.com/the-ultimate-guide-to-thedatetime-datatypes)を参照してください。 – SMor
なぜdatetime2ではなくdatetimeを使用していますか?この問題はありませんか? –
** DATETIMEの使用をやめ、SQL Server ** 2008 **で導入されたDATETIME2(n)のデータ型を使用しなくてはならない**多くの**理由の1つ。そのデータ型は同じ動作を示しません** - datetimeは常に正しく解釈されます。 –