我正在使用 MS SQL Server 2008 R2,我需要在每一行中都有一个单元格,其中包含该行插入数据库的日期和时间。现在,由于我想编写脚本然后在 MS SQL Server 2005 中加载数据库,因此我无法使用 datetime 或 date,因此我尝试在 Computed Column Specification 属性中使用 getdate() 函数。谁能帮帮我吗。
谢谢
我正在使用 MS SQL Server 2008 R2,我需要在每一行中都有一个单元格,其中包含该行插入数据库的日期和时间。现在,由于我想编写脚本然后在 MS SQL Server 2005 中加载数据库,因此我无法使用 datetime 或 date,因此我尝试在 Computed Column Specification 属性中使用 getdate() 函数。谁能帮帮我吗。
谢谢
让·克劳德,这是一个完整的例子。
代码
USE tempdb;
SET NOCOUNT ON;
GO
CREATE TABLE dbo.TestTable (
RecordId int IDENTITY,
RecordValue varchar(32) NOT NULL,
RecordCreateDate datetime NOT NULL,
CONSTRAINT PK_TestTable
PRIMARY KEY CLUSTERED (
RecordId
)
)
GO
ALTER TABLE dbo.TestTable
ADD CONSTRAINT DF_TestTable_RecordCreateDate
DEFAULT GETDATE()
FOR RecordCreateDate;
GO
INSERT INTO dbo.TestTable (RecordValue) VALUES ('this');
WAITFOR DELAY '00:00:01';
INSERT INTO dbo.TestTable (RecordValue) VALUES ('that');
WAITFOR DELAY '00:00:01';
INSERT INTO dbo.TestTable (RecordValue) VALUES ('the other thing');
SELECT * FROM dbo.TestTable;
结果
RecordId RecordValue RecordCreateDate
-------- --------------- -----------------------
1 this 2012-05-16 10:43:48.400
2 that 2012-05-16 10:43:49.403
3 the other thing 2012-05-16 10:43:50.403
您还应该研究新的日期时间数据类型和 SYSDATETIME() 函数。
Jean Claude,您似乎对 datetime 有误解,我曾经使用过的每个 SQL Server 版本都支持它,一直到 6.5。这是 SQL 2008 中新增的日期和时间类型。
Rob 的出色答案应该在 SQL 2005 和 2008 中都能正常工作。