在SQL中,我有一个显示当前月份数据的DateField。一些日期是NULL,我想以某种方式用fn NOW()日期替换NULL Date。有人可以帮我指导我在查询中更新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
答案 0 :(得分:4)
只需使用:
...COALESCE(Datefield, GETDATE()) as Datefield
答案 1 :(得分:3)
在SQL Server中,您将使用isNULL(Column, GetDate())
或如果您有多列,请使用COALESCE
COALESCE(column1, column2, GETDATE()) as columnName
这将返回参数列表中的第一个非空项目。
答案 2 :(得分:1)
您可以使用ISNULL或COALESCE,具体取决于您需要它的上下文。
两者之间有一些重要的区别,您可以在这里查看:
http://blogs.msdn.com/b/sqltips/archive/2008/06/26/differences-between-isnull-and-coalesce.aspx
答案 3 :(得分:0)
这可以解决您的问题。
http://msdn.microsoft.com/en-us/library/ms184325.aspx
而不是
SELECT dateField...
使用
SELECT ISNULL(dateField, GETDATE())...
答案 4 :(得分:0)
select IsNull(yourdate, getdate())
答案 5 :(得分:0)
您可以尝试
ISNULL(dbo.POTable.Date, CURRENT_TIMESTAMP) AS Datefield
或
ISNULL(dbo.POTable.Date, GETDATE()) AS Datefield
答案 6 :(得分:-3)
只需在Datefield为空的位置创建一个sql UPDATE SET并将值设置为getdate()