【发布时间】:2012-01-24 20:31:06
【问题描述】:
我有一个带有 DateTime 列的 SQL Server 2008 表,我想将其转换为 24 小时格式。
规范的指导是使用以下内容:
select CONVERT(datetime, GetDate(), 121)
产生:
2012-01-24 15:22:27.340
完美。好的,应用这些知识,让我们将GetDate() 替换为CONVERT 表达式的列:
select top(5) CONVERT(datetime, LogTable.Timestamp, 121) from LogTable
order by LogTable.Id DESC
我们得到:
2012-01-24 03:25:47.933
2012-01-24 03:25:46.917
2012-01-24 03:25:46.547
2012-01-24 03:25:46.543
2012-01-24 03:25:46.543
我做错了什么?与GetDate() 函数的输出相反,应如何设计表达式以使CONVERT 在列上工作?
【问题讨论】:
-
到底出了什么问题?为什么你的输出出乎意料?
-
LogTable.Timestamp 中的实际数据是什么?这是 VarChar(或 nvarchar)列,还是已经是 DateTime?
-
您确定 LogTable.Timestamp 数据实际上不是凌晨 3 点吗?
-
您的示例甚至不应该编译,您没有从任何表中进行选择。我很惊讶你实际上得到了一些数据。 \
-
我期待的输出是 24 小时格式 - 例如。下午 3:25 = 15:25。该字段的类型为日期时间。是的,时间戳实际上来自最近的一次捕获,所以是美国东部标准时间下午 3 点。