NULL
すべてのインスタンスを(魔法の値よりもはるかに優れている)に更新したいだけの場合は、次の01/01/0001
ように言えます。
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'
UPDATE '
+ QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
+ '.' + QUOTENAME(OBJECT_NAME([object_id]))
+ ' SET ' + QUOTENAME(name) + ' = NULL
WHERE ' + QUOTENAME(name) + ' = ''20010101'';'
FROM sys.columns
WHERE system_type_id = 40; -- date
PRINT @sql;
--EXEC sp_executesql @sql;
date
さて、これがうまくいかなかったのは、データ型が実際ではなくdatetime
/である場合だと思いますsmalldatetime
。したがって、代わりにこれが必要になる場合があります。
WHERE system_type_id IN (40,42,43,58,61);
この hocus pocus を引き続き使用する場合は、次の行を変更できます。
+ ' SET ' + QUOTENAME(name) + ' = NULL
これに:
+ ' SET ' + QUOTENAME(name) + ' = ''00010101''
datetime
ただし、列が/の場合、これは機能しませんsmalldatetime
。
常に使用する必要があることに注意してくださいYYYYMMDD
。これMM/DD/YYYY
は悪い習慣であり、スタックの上下で誤解を招きやすいものです。