选择语句设置DateTime精度

时间:2012-05-16 14:48:29

标签: sql sql-server sql-server-2008

我正在尝试在SQL select语句中设置DateTime的精度。在进入查询之前我无法执行此操作。我正在使用SQL Server 2008。

目前的格式是:

2012-05-14 14:54:45.307

我想继续从DateTime中删除毫秒和秒钟给我:

2012-05-14 14:54

我不确定是否可以这样做我真的希望如此,谢谢。

4 个答案:

答案 0 :(得分:1)

删除它们:

update tablename
set datecolumn = DATEADD(ms, -DATEPART(ms, datecolumn), datecolumn)

答案 1 :(得分:1)

看起来这比其他选项更简单(没有字符串转换或日期数学):

SELECT CONVERT(SMALLDATETIME, GETDATE());

如果你仍然需要它是一个明确的DATETIME(例如,如果你的应用程序将对次要类型更改进行barf),你可以将它包装在另一个转换中:

SELECT CONVERT(DATETIME, CONVERT(SMALLDATETIME, GETDATE()));

这仍然具有细微的粒度,但将是一个正确的DATETIME类型,其余为零。

答案 2 :(得分:0)

你不能并保持DateTime投射。但是,如果您希望将其格式化为display(VARCHAR),则可以使用CONVERT,如下所示:

CONVERT(VARCHAR(16),GETDATE(),120)

答案 3 :(得分:0)

SELECT SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 16)

或者避免声明没有长度的VARCHAR:

SELECT SUBSTRING(CONVERT(VARCHAR(16), GETDATE(), 120), 1, 16)