【发布时间】:2010-11-30 15:21:57
【问题描述】:
我在 SQL Server 数据库中有一个列 EntryDate。
如果查询中未提供值,我如何设置 NULL 值以用今天的日期(服务器时间)填充它?
【问题讨论】:
标签: sql sql-server null
我在 SQL Server 数据库中有一个列 EntryDate。
如果查询中未提供值,我如何设置 NULL 值以用今天的日期(服务器时间)填充它?
【问题讨论】:
标签: sql sql-server null
不允许在列上使用 Null,并在 getdate() 列上设置默认值
/*Deal with any existing NULLs*/
UPDATE YourTable SET EntryDate=GETDATE() WHERE EntryDate IS NULL
/*Disallow NULLs*/
ALTER TABLE YourTable ALTER COLUMN EntryDate DATE NOT NULL
/*Add default constraint*/
ALTER TABLE YourTable ADD CONSTRAINT
DF_YourTable_EntryDate DEFAULT GETDATE() FOR EntryDate
【讨论】:
EntryDate 的值,例如 INSERT INTO [YourTable] (Col1) VALUES ('X')
Update table
set EntryDate = getdate()
where EntryDate is null
【讨论】:
另一种解决方案:
重命名您的表,并创建一个具有相同名称的视图来执行您想要的逻辑,即:
CREATE VIEW TableName
AS
SELECT Column1, Column2, ... ISNULL(EntryDate, GETDATE())
FROM Old_TableName
然后你不会改变你的实际数据,但如果你得到那个表的空值,它会报告今天的日期。
【讨论】:
DECLARE @foo VARCHAR(5);SET @foo=NULL; SELECT ISNULL(@foo, '123456789');SELECT COALESCE(@foo, '123456789') 参见此处:databases.aspfaq.com/database/coalesce-vs-isnull-sql.html