我有一个date
类型为column且默认设置为的表:getdate()
但是,当我尝试datediff()
对两个分开的原始数据进行处理时,它总是给我0或某个常数。如何分配日期的默认值并执行datediff()
该工作?
CREATE TABLE Test
(
id INT PRIMARY KEY NOT NULL IDENTITY,
date DATE DEFAULT getdate() NOT NULL,
user VARCHAR(100)
);
CREATE UNIQUE INDEX Test_id_uindex ON Test (id);
两次或两次以上之间延迟1秒调用以下原始数据
INSERT INTO Test(user) VALUES ('Cool1')
INSERT INTO Test(user) VALUES ('Cool2')
现在,在下面查看下一个查询的奇怪输出:
SELECT getdate() as date
输出:
date
2016-12-22 10:42:40
SELECT * from Test
输出:
id date user
1 2016-12-22 Cool
2 2016-12-22 Cool1
最后一个:
SELECT
a.id,
datediff(MILLISECOND, a.date, b.date)
FROM Test a
JOIN Test b ON a.id = b.id + 1
输出:
id difTime
2 0
您的代码很好。您将date
数据类型与datetime
或混淆datetime2
。更改表定义以使用存储时间和日期的类型:
CREATE TABLE Test (
id INT PRIMARY KEY NOT NULL IDENTITY,
date DATETIME DEFAULT getdate() NOT NULL,
user VARCHAR(100)
);
这是很自然的地方,因为会GETDATE()
返回带有时间成分的值。但是,DATE
不支持时间部分。
您还可以使用CURRENT_TIMESTAMP
,其名称更能说明它返回时间的事实。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句