mysql-fetch date无时区偏移

waxmsbnn  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(655)

我将bith的date(dob)存储为mysql表中的date列。
现在的问题是:当我插入bith的日期时,例如:2001/02/02,我可以毫无问题地存储它。但当我选择它的时候( SELECT dob FROM table1 ),我得到utc格式的结果,如: 2001-02-01T18:30:00.000Z 我继续深入挖掘,发现这是因为utc偏移。
有没有办法返回表中存储的日期而不使用utc偏移量?出生日期必须在所有时区保持不变,无论utc是什么。
注意:我不想更改服务器时区,因为我确实有某些列使用时差。
编辑:当我使用mysql工作台执行查询时,得到的是预期的结果,但是当我使用node(mysqljs)时,得到的是时区格式的结果。
编辑:刚刚发现mysqljs有问题,因为它使用时区属性连接到mysql服务器(https://github.com/mysqljs/mysql#connection-(可选)
先谢谢你。

qqrboqgw

qqrboqgw1#

如果您只想忽略时区,请使用mysql date :

select date(dob) from table1

但结果将是 'yyyy-mm-dd' 如果你想把它格式化成 2001/02/02 :

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

nr7wwzry2#

你可以试着设置 dateStringstrue 在mysqljs连接参数中。这里的问题是mysqljs正在将其转换为javascript日期对象。这将使它以字符串的形式返回预期的数据。

cidc1ykv

cidc1ykv3#

所以,mysqljs和我使用的 timezone 选项创建连接时。mysqljs使用 local 默认为 timezone 选项并将其设置为 Z 似乎为我解决了这个问题。
下面是一个示例:

`mysql.createPool({
  connectionLimit: mySQLConfig.connectionLimit,
  host: mySQLConfig.host,
  user: mySQLConfig.username,
  password: mySQLConfig.password,
  database: mySQLConfig.database,
  timezone: 'Z'
});`

相关问题