В SQL у меня есть DateField, который показывает данные текущего месяца.Некоторые из дат имеют значение NULL, и я хотел бы заменить дату NULL чем-то вроде даты fn NOW ().Может ли кто-нибудь помочь мне с обновлением NULLS в моем запросе?Я использую MS SQL 2008 R2.
SELECT TOP (100) PERCENT dbo.[001_SubItem_Price].SubItem, { fn NOW() } AS Date, dbo.POTable.Date AS Datefield FROM dbo.[001_SubItem_Price] LEFT OUTER JOIN dbo.POTable ON dbo.[001_SubItem_Price].SubItem = dbo.POTable.Item WHERE (MONTH(dbo.POTable.Date) = MONTH(GETDATE())) OR (MONTH(dbo.POTable.Date) IS NULL) GROUP BY dbo.[001_SubItem_Price].SubItem, dbo.POTable.Date ORDER BY dbo.[001_SubItem_Price].SubItem
Просто используйте:
...COALESCE(Datefield, GETDATE()) as Datefield
на сервере SQL, вы бы использовали isNULL(Column, GetDate())
isNULL(Column, GetDate())
или, если у вас несколько столбцов, используйте COALESCE
COALESCE
COALESCE(column1, column2, GETDATE()) as columnName
Это вернет первый ненулевой элемент в списке параметров.
Вы можете использовать ISNULL или COALESCE в зависимости от того, в каком контексте вам это нужно.
Есть несколько важных различий между ними, которые вы можете проверить здесь:
http://blogs.msdn.com/b/sqltips/archive/2008/06/26/differences-between-isnull-and-coalesce.aspx
Вы можете попробовать либо
ISNULL(dbo.POTable.Date, CURRENT_TIMESTAMP) AS Datefield
, либо
ISNULL(dbo.POTable.Date, GETDATE()) AS Datefield
select IsNull(yourdate, getdate())
Это должно решить вашу проблему.
http://msdn.microsoft.com/en-us/library/ms184325.aspx
Вместо
SELECT dateField...
использование
SELECT ISNULL(dateField, GETDATE())...
Просто создайте SQL UPDATE SET, где поле даты равно NULL, и установите значение getdate ()