SQL Server中的Trunc(sysdate)

时间:2009-11-11 05:00:46

标签: sql sql-server sql-server-2005 oracle tsql

等同于:

TRUNC(SYSDATE) 

...在SQL Server 2005中?

2 个答案:

答案 0 :(得分:18)

推荐:

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

这是另一种选择,但由于投射到FLOAT而存在风险。它也被证明不会扩展性能以及DATEADD / DATEDIFF方法。

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

答案 1 :(得分:1)

另一种选择是使用CONVERT(MSSQL 2008及更高版本)并使用适当的样式或使用可以随后进行SUBSTRING的样式。我不知道与dateadd / datediff解决方案相比的性能。

e.g。

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

返回:

2012-01-03 15:30

使用组列出每分钟创建的行的示例(预先假定'已创建'日期时间列):

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)