3

我需要打电话getdate(),我需要一个datetime返回,但是没有当前时间,例如今天它应该返回以下,无论它是什么时间被调用:

2013-09-26 00:00:00.000
4

2 回答 2

12

对于 SQL 2008/2012:

CAST(GETDATE() AS DATE)

或其他版本:

DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
于 2013-09-26T18:30:50.007 回答
8

这里有很多选择:

-- all versions:

SELECT CONVERT(DATETIME, {fn CURDATE()});

SELECT DATEADD(DAY, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP), 0);

SELECT CONVERT(DATETIME, CONVERT(INT, CONVERT(FLOAT, CURRENT_TIMESTAMP)));

SELECT CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, CURRENT_TIMESTAMP)));

-- 2008+:

SELECT CONVERT(DATETIME, CONVERT(DATE, CURRENT_TIMESTAMP));

-- 2012+:

DECLARE @d DATETIME = CURRENT_TIMESTAMP;
SELECT DATETIMEFROMPARTS(YEAR(@d), MONTH(@d), DAY(@d), 0,0,0,0);

你可能很想做这样的事情:

SELECT CONVERT(DATETIME, CONVERT(CHAR(8), CURRENT_TIMESTAMP, 112));

不。这是个坏消息

于 2013-09-26T18:30:32.207 回答