我将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)
谢谢。
答案 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