开发者

Trunc(sysdate) in SQL Server

开发者 https://www.devze.com 2022-12-11 06:17 出处:网络
What is the equivalent of: TRUNC(SYSDA开发者_Go百科TE) ...in SQL Server 2005?Recommended: DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

What is the equivalent of:

TRUNC(SYSDA开发者_Go百科TE) 

...in SQL Server 2005?


Recommended:

DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

This is another alternative, but it's risky because of casting to a FLOAT. It's also been demonstrated to not scale performance as well as the DATEADD/DATEDIFF approach.

CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)


Another option is to use CONVERT (MSSQL 2008 and later) and either use an appropriate style or use a style that you can then SUBSTRING. I have no idea about the performance compared to the dateadd/datediff solution though.

e.g.

SELECT SUBSTRING(CONVERT(nvarchar(30), GETDATE(), 120), 1, 16)

Returns:

2012-01-03 15:30

Example using group that lists rows created per minute (presupposes a 'created' datetime column):

SELECT SUBSTRING(CONVERT(nvarchar(30), created, 120), 1, 16) as [minute]
, COUNT(1) as [per min]
FROM foo
GROUP BY SUBSTRING(CONVERT(nvarchar(30), created, 120), 1, 16)


As of SQL Server 2022 CTP 2.1, DATETRUNC() is now supported which should line up well with the TRUNC() capability in Oracle. Documentation can be found here.

0

精彩评论

暂无评论...
验证码 换一张
取 消