文字列に異なる形式を使用している場合、この動作を回避できます。
常にiso形式が2つあります.SQL Serverは、サーバーの日付形式設定に関係なく、常に同じ方法で解析します。
これらは:
1)短縮形:YYYYMMDD。例 '20120301' - 2012年3月1日
2)ロングフォーム:YYYY-MM-DDTHH:MM:SS.msms '例 '2012-03-01T12:13:00.000Z' - 2012年3月1日13時12時(PM)
長い形式では、ミリ秒はオプションです。これは完全に許容されるISO datetime '2012- 03-01T12:13:00Z '
最後のZはタイムゾーン情報です。 SQL Serverではこれを実際には必要としません。 (他の製品があるけれども、もう少し厳しい)
例えば、これを試してください:あなたは常には、2つのISO規格のいずれかを使用してみてください日付を入力するテキストを使用
DECLARE @foo DATETIME
SET DATEFORMAT DMY
-- this will be the 3rd of january in DMY
SET @foo = '2012-03-01'
SELECT 'DMY: Not ISO', @foo
SET @foo = '20120301'
SELECT 'DMY: ISO', @foo
SET DATEFORMAT MDY
-- this will be the 1st of March in MDY
SET @foo = '2012-03-01'
SELECT 'MDY: not ISO', @foo
SET @foo = '20120301'
SELECT 'MDY: ISO', @foo
。それは物事をより決定論的にするだけです。
ショート形式(SQL Serverなど) http://msdn.microsoft.com/en-US/library/ms187085(v=sql.90).aspx
ISO 8601形式(SQL Serverなど) http://msdn.microsoft.com/en-us/library/ms190977(v=sql.90).aspx
答えがありますhttp://stackoverflow.com/questions/17491459/how-can-i- get-sql-server-to-use-user-locale-for-a-query-for-a-query –