-2

日付に問題があります。問題は、形式が異なっていても、ISDATE によって有効な日付が返されることです。ただし、INSERT NULL は、 2013 年 8 月 28 日または 2013 年 8 月 28日のようにフォーマットされていない任意の日付フィールドです。

これは国際用です。また、米国でのみ使用できます。つまり、2013 年 8 月 8 日は 2011 年 8 月 8 日を意味し、2011-08-08 としてキャストされます。

フォーマットを確認する方法がわかりません。CASE WHEN全体を実行できます。

私はこのように遊んでみました:

DECLARE @d DATETIME = '10/01/2011';
SELECT CASE WHEN @d != FORMAT ( @d, 'yyyy/MM/dd', 'en-US' ) THEN @d ELSE NULL END

現在列にある日付は、そのような形式です。2013 年 8 月 28 日または 2013 年 8 月 28 日 フォーマットが正しければ、キャストを行います。

ありがとう!

4

2 に答える 2

-1

日付を varchar として保存してから、次のクエリを使用してフォーマットを保存できます。

DECLARE @d varchar(10) 
set @d= '08/28/2013';
SELECT CASE WHEN @d LIKE '[0-1][0-9]/[0-3][0-9]/[1-2][0-9][0-9][0-9]' THEN @d ELSE NULL END
于 2013-08-28T15:56:27.637 に答える