私はいくつかの助けを借りてできたSQLサーバーに問題があります。 誤った日付範囲から行を返す日付範囲のselect文を実行すると、
私は、次の
select * from theTable where startDate between '2016-09-01 00:00:00' and '2016-09-08 23:59:59'
を実行した場合、私はstartDate
が第一と9月の8日の間にある行を期待し、私が実際に取得していますと、1月9日と8月9日の間startDate
持つ行です。
私は私が使用してdatebaseのためにセットアップされている言語を確認しています
select * from sys.syslanguages order by name where name = @@language
これは私がのためのデフォルトの言語を確認している英国の
DBCC useroptions戻り
textsize 2147483647
language British
dateformat dmy
datefirst 1
lock_timeout -1
quoted_identifier SET
arithabort SET
ansi_null_dflt_on SET
ansi_warnings SET
ansi_padding SET
ansi_nulls SET
concat_null_yields_null SET
isolation level read committed
を返します。ログインし、これも英国です。私はprint month('2016-09-01 00:00:00')
を実行すると、私は日付と上記の時間はyyyy-mm-dd hh:mi:ss(24h)
正規のODBCべきであると誤解していない限り
それは1としませ9.返します。
なぜ9の代わりに1が印刷されるのですか。さらに重要なのはどのように修正するのですか? @@version
戻り
Microsoft SQL Server 2005 - 9.00.5057.00 (X64)
Mar 25 2011 13:33:31
Copyright (c) 1988-2005 Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)
を印刷
はあなたの助けをいただき、ありがとうございます。 これは既に答えられている場合は、私はそれを指摘することができます、私は答えを見つけることができません。
明白な形式( 'YYYYMMDD')を使用してください:' startDate> = '20160901'とstartDate <'20160909'' – Lamak