我试图在我的 SQL 选择语句中设置我的 DateTime 的精度。在进行查询之前,我无法执行此操作。我正在使用 SQL Server 2008。
当前格式为:
2012-05-14 14:54:45.307
我想继续从 DateTime 中删除毫秒和秒,给我:
2012-05-14 14:54
我不确定这是否可以做到,我真的希望如此,谢谢。
我试图在我的 SQL 选择语句中设置我的 DateTime 的精度。在进行查询之前,我无法执行此操作。我正在使用 SQL Server 2008。
当前格式为:
2012-05-14 14:54:45.307
我想继续从 DateTime 中删除毫秒和秒,给我:
2012-05-14 14:54
我不确定这是否可以做到,我真的希望如此,谢谢。
看起来这比其他选项更简单(没有字符串转换或日期数学):
SELECT CONVERT(SMALLDATETIME, GETDATE());
如果您仍然需要它是一个显式的 DATETIME(例如,如果您的应用程序会因为较小的类型更改而出错),您可以将其包装在另一个转换中:
SELECT CONVERT(DATETIME, CONVERT(SMALLDATETIME, GETDATE()));
这仍将具有微小的粒度,但将是正确的 DATETIME 类型,其余部分为零。
只需删除它们:
update tablename
set datecolumn = DATEADD(ms, -DATEPART(ms, datecolumn), datecolumn)
您不能保留 DateTime 投射。但是,如果您希望将其格式化为显示 (VARCHAR),您可以像这样使用 CONVERT:
CONVERT(VARCHAR(16),GETDATE(),120)
SELECT SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 16)
或者为了避免声明没有长度的 VARCHAR:
SELECT SUBSTRING(CONVERT(VARCHAR(16), GETDATE(), 120), 1, 16)