【发布时间】:2010-12-15 08:22:36
【问题描述】:
相当于什么:
TRUNC(SYSDATE)
...在 SQL Server 2005 中?
【问题讨论】:
-
30 个问题,不接受答案?为什么要打扰?
-
这个问题是合法的 - OP 想要 ORACLE 的等效功能。
标签: sql sql-server sql-server-2005 oracle tsql
相当于什么:
TRUNC(SYSDATE)
...在 SQL Server 2005 中?
【问题讨论】:
标签: sql sql-server sql-server-2005 oracle tsql
推荐:
DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
这是另一种选择,但由于转换为 FLOAT,因此存在风险。它也被证明不能像 DATEADD/DATEDIFF 方法那样扩展性能。
CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
【讨论】:
另一种选择是使用CONVERT(MSSQL 2008 及更高版本)并使用适当的样式或使用您可以订阅的样式。不过,我不知道与 dateadd/datediff 解决方案相比的性能。
例如
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)
【讨论】:
Date 数据类型不存储时间信息。