Sql server 2005 SQL Server 2008。设置日期和时间的困难“;时间戳;
我使用的是MS SQL Server 2008 R2,我需要在每一行中都有一个单元格,其中包含该行插入数据库的日期和时间。现在,由于我想在MS SQL Server 2005中编写脚本并加载数据库,我无法使用datetime或date,因此我尝试在Computed Column Specification属性中使用getdate()函数。谁能帮帮我吗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
谢谢让·克劳德,这里有一个完整的例子 代码
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编写脚本时会出现错误,因为当时不支持它