Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 SQL Server 2008。设置日期和时间的困难“;时间戳;_Sql Server 2005_Datetime_Timestamp_Sql Server 2008 R2 - Fatal编程技术网

Sql server 2005 SQL Server 2008。设置日期和时间的困难“;时间戳;

Sql server 2005 SQL Server 2008。设置日期和时间的困难“;时间戳;,sql-server-2005,datetime,timestamp,sql-server-2008-r2,Sql Server 2005,Datetime,Timestamp,Sql Server 2008 R2,我使用的是MS SQL Server 2008 R2,我需要在每一行中都有一个单元格,其中包含该行插入数据库的日期和时间。现在,由于我想在MS SQL Server 2005中编写脚本并加载数据库,我无法使用datetime或date,因此我尝试在Computed Column Specification属性中使用getdate()函数。谁能帮帮我吗 谢谢让·克劳德,这里有一个完整的例子 代码 USE tempdb; SET NOCOUNT ON; GO CREATE TABLE dbo.Te

我使用的是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,下面是一个完整的示例

代码

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

您还应该研究新的datetime数据类型和SYSDATETIME()函数。

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


Rob的优秀答案在SQL 2005和2008中都应该可以使用。

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


Rob的优秀答案应该在SQL 2005和2008中都可以使用。

Getdate()应该在默认值规范中,而不是在计算列中。使用
Getdate()
计算列有什么意义?你是说带有
default getdate()
的普通列吗?老实说,我只是SQL的初学者,但我发现了一个例子,他将getdate函数放在计算列中,我将在default value属性中尝试。我不能使用datetime,因为它在为sql server 2005编写脚本时会出现错误,因为它不受支持。getdate()应该在默认值规范中,而不是计算列中。使用
getdate()
计算列有什么意义?你是说带有
default getdate()
的普通列吗?老实说,我只是SQL的初学者,但我发现了一个例子,他将getdate函数放在计算列中,我将在default value属性中尝试。我无法使用datetime,因为它在为sql server 2005编写脚本时会出现错误,因为当时不支持它