Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
格式化日期时,NodeJS小时中的SQL查询处于关闭状态_Sql_Sql Server_Node.js_Date_Formatting - Fatal编程技术网

格式化日期时,NodeJS小时中的SQL查询处于关闭状态

格式化日期时,NodeJS小时中的SQL查询处于关闭状态,sql,sql-server,node.js,date,formatting,Sql,Sql Server,Node.js,Date,Formatting,我想格式化查询中的dtime2字段:SELECT format(MAX(dTime),'yyyy-MM-dd hh:MM:ss')FROM triangulations 这将给出输出{result:[{'':'03:34:30'}],rowcount:1} 时间应该是15点。将格式保留在查询之外时也会显示此信息。查询:从三角剖分中选择MAX(dTime)给出输出: {结果:[{'':2017年7月17日星期一15:34:30 GMT+0000(协调世界时)}, 行计数:1} 我使用库节点mssq

我想格式化查询中的dtime2字段:
SELECT format(MAX(dTime),'yyyy-MM-dd hh:MM:ss')FROM triangulations

这将给出输出{result:[{'':'03:34:30'}],rowcount:1}

时间应该是15点。将格式保留在查询之外时也会显示此信息。查询:
从三角剖分中选择MAX(dTime)
给出输出:

{结果:[{'':2017年7月17日星期一15:34:30 GMT+0000(协调世界时)}, 行计数:1}

我使用库节点mssql连接器在NodeJs中执行查询


为什么SQL会给我错误的时间?

通常是当你的时间不好,而分钟和日期都很好时,这意味着你使用了错误的时区。这可能意味着要么将错误时区中的时间写入数据库,要么从数据库中获取预期的其他时区中的日期

在处理日期时,您应该始终明确时区(将日期放入数据库时,您在这里似乎没有这样做),如果您总是以UTC格式保存日期(您在这里阅读的日期似乎就是这种情况),那么事情就会变得容易得多

在节点中,您可以使用“时刻”模块(特别是“时刻时区”)转换日期。见:

有关一些示例,请参见此答案-它是关于Mongo而不是SQL server的,但您可以在此处使用完全相同的转换:


在您的格式字符串中,
yyyy-MM-dd hh:MM:ss
hh
表示您想要12小时周期格式的小时,因此3和15始终是3(上午和下午)。使用
HH
以24小时周期格式获取它们:

yyyy-MM-dd HH:MM:ss


,向下滚动至格式说明符列表。

您应该使用HH而不是HH:

SELECT FORMAT(MAX(dTime),'yyyy-MM-dd HH:mm:ss') FROM triangulations

那么,是否可以在SQL查询中将数据时间格式化为正确的时区呢?Me first:P很好地发现了它!你说得对,比我早16秒:P(几分钟后它将显示为同一时间)