1

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

当前格式为:

2012-05-14 14:54:45.307

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

2012-05-14 14:54

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

4

4 回答 4

2

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

SELECT CONVERT(SMALLDATETIME, GETDATE());

如果您仍然需要它是一个显式的 DATETIME(例如,如果您的应用程序会因为较小的类型更改而出错),您可以将其包装在另一个转换中:

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

这仍将具有微小的粒度,但将是正确的 DATETIME 类型,其余部分为零。

于 2012-05-16T15:14:19.170 回答
1

只需删除它们:

update tablename
set datecolumn = DATEADD(ms, -DATEPART(ms, datecolumn), datecolumn)
于 2012-05-16T14:53:27.750 回答
0

您不能保留 DateTime 投射。但是,如果您希望将其格式化为显示 (VARCHAR),您可以像这样使用 CONVERT:

CONVERT(VARCHAR(16),GETDATE(),120)
于 2012-05-16T14:53:40.613 回答
0
SELECT SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 16)

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

SELECT SUBSTRING(CONVERT(VARCHAR(16), GETDATE(), 120), 1, 16)
于 2012-05-16T14:57:24.113 回答