1

我正在使用 MS SQL Server 2008 R2,我需要在每一行中都有一个单元格,其中包含该行插入数据库的日期和时间。现在,由于我想编写脚本然后在 MS SQL Server 2005 中加载数据库,因此我无法使用 datetime 或 date,因此我尝试在 Computed Column Specification 属性中使用 getdate() 函数。谁能帮帮我吗。

谢谢

4

2 回答 2

5

让·克劳德,这是一个完整的例子。

代码

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() 函数。

于 2012-05-16T17:46:17.443 回答
0

Jean Claude,您似乎对 datetime 有误解,我曾经使用过的每个 SQL Server 版本都支持它,一直到 6.5。这是 SQL 2008 中新增的日期和时间类型。

Rob 的出色答案应该在 SQL 2005 和 2008 中都能正常工作。

于 2012-05-29T15:02:54.420 回答