【发布时间】:2014-10-11 05:16:32
【问题描述】:
我正在使用 Node.js 中的边缘模块从 SQL SERVER R2 读取数据。在 SQL Server Management Studio 中,日期的格式为 2014-10-05 22:24:00,但当我在 JavaScript 对象中获取它时,它的格式为 05/10/2014 22:24:00 PM。为什么会发生这种情况?如何读取相同格式的日期?
【问题讨论】:
我正在使用 Node.js 中的边缘模块从 SQL SERVER R2 读取数据。在 SQL Server Management Studio 中,日期的格式为 2014-10-05 22:24:00,但当我在 JavaScript 对象中获取它时,它的格式为 05/10/2014 22:24:00 PM。为什么会发生这种情况?如何读取相同格式的日期?
【问题讨论】:
在数据意义上,这两个值是相同的;它们仅在格式上有所不同;如果未指定所选格式,不同的程序将使用不同的默认值。在任一日期需要采用特定格式时,该日期将需要应用格式化命令作为显示更改,而基础值保持不变。如果你只是想让它们看起来一样,只需要改变一个,使一个的格式与另一个的格式匹配。您可以使用此脚本 (see this link) 将 SQL Server 日期的格式更改为“DD/MM/YYYY HH:mm:ss”:
DECLARE @Date DATETIME = '2014-10-05 22:24:00'
SELECT CONVERT(VARCHAR(25), @Date, 103) + ' ' + CONVERT(VARCHAR(25), @Date, 108) AS FormattedDate
它的末尾没有 AM/PM - 我不确定为什么它会出现在 JavaScript 日期中,因为时间是以 24 小时格式给出的。如果需要,您可以使用以下方法添加它:
DECLARE @Date DATETIME = '2014-10-05 22:24:00'
SELECT CONVERT(VARCHAR(26), @Date, 103) + ' ' + CONVERT(VARCHAR(26), @Date, 108) + ' ' + RIGHT(CONVERT(VARCHAR(26),@DATE,109),2) AS FormattedDate
我承认这一切现在开始看起来很笨拙 - 将两个日期格式化为易于显示的东西可能更容易。 this question 的答案有帮助。最简单的解决方案是避免在可能的最后一分钟之前进行日期格式化,此时只需要播放您的结果数据。
希望有帮助。
【讨论】: