MySQL-提取日期,不带时区偏移

时间:2018-08-17 16:40:33

标签: mysql node.js database date date-of-birth

我将bith的日期(DOB)存储为mySQL表中的Date列。

现在是问题所在: 当我插入生日日期时,例如:2001/02/02,我可以毫无问题地存储它。 但是,当我选择它(SELECT dob FROM table1)时,我得到的是UTC格式的结果,例如:2001-02-01T18:30:00.000Z

我继续进行挖掘以找出是由于UTC偏移造成的。

有什么方法可以返回没有UTC偏移量的表中存储的Date?无论UTC如何,所有时区的出生日期都必须恒定。

注意:我不想更改服务器时区,因为我确实有某些使用时差的列。

编辑:当我使用MySQL工作台执行查询时,得到了预期的结果,但是当我使用节点(mysqljs)时,得到了时区格式的结果。

编辑:刚刚发现这是mysqljs的问题,因为它使用timezone属性连接到mysql服务器。 (https://github.com/mysqljs/mysql#connection-options

谢谢。

4 个答案:

答案 0 :(得分:0)

如果只想忽略时区,请使用MySQL date

select date(dob) from table1

但结果将为'yyyy-mm-dd'

如果您希望将其格式化为2001/02/02

select DATE_FORMAT(dob,'%y/%m/%d') from table1

答案 1 :(得分:0)

您可以尝试在mysqljs连接参数中将dateStrings设置为true。这里的问题是mysqljs将其转换为javascript日期对象。这将使它作为带有预期数据的字符串返回。

答案 2 :(得分:0)

因此,这是mysqljs的问题,我在创建连接时使用了<a href=""></a>选项。 mysqljs使用a作为timezone选项的默认值,并将其设置为local似乎可以解决此问题。

这里是一个示例:

timezone

答案 3 :(得分:0)

首先,这不是错误。 mysql npm 这样做是为了避免不同时区的时间冲突。但是当我们在本地工作时,这有点恶心。

为避免这种情况,您可以添加一个名为“时区”的连接选项并将其设置为“本地”或“Z”

var mysql      = require('mysql');
var connection = mysql.createConnection({
    host     : 'example.org',
    user     : 'bob',
    password : 'secret',
    **timezone : 'local'**
});

参考:- mysql npm doc