【发布时间】:2020-01-27 12:12:57
【问题描述】:
我正在开发一个连接到 PostgresDB 的带有 Expo 的 React Native 应用程序。
我有一个查询,它在两个日期之间加载一些数据,如下所示:
db.query(
`SELECT activitydate, phaseid, time, userid, remark, zkub, status, hours_status.color status_color, comment, project.name project_name
FROM hours
LEFT JOIN phase ON phase.id = hours.phaseid
LEFT JOIN project ON project.id = phase.projectid
LEFT JOIN hours_status ON hours_status.statusid = hours.status
WHERE activitydate >= '${startDate}' AND activityDate <= '${endDate}'
AND userid = '${userid}' ORDER BY activitydate`
... startDate is 2019-08-01 and endDate is 2019-08-31 in this example !
它确实给了我我需要的数据(示例):
{"activitydate":"2019-07-31T22:00:00.000Z","phaseid":766x7,"time":180,"userid":1xx,"remark":"I did this and that","zkub":" ","status":0,"status_color":"000000","comment":"","project_name":"coolProject"}
... of course this is 1 Element from the Array !
现在的问题是活动日期应该是:“2019-08-01”,但它是“2019-07-31”,即使它在具有正确活动日期的数据库中正确安全。
当我在浏览器中使用 localhost/api/... 获取数据时不仅错误,而且在我的应用程序中也显示错误。
我认为这可能与设置的时间戳有关?如您所见,它设置为T22:00:00.000Z。我不知道浏览器或 nodejs(express) 可能使用哪个日期,但它会将结果推迟 1 天。
【问题讨论】:
-
你在db中的activitydate中存储了什么???
-
我存储了一个日期。它的类型为 date ,在 db 内部看起来像这样:2019-08-01 如果我查询它看起来像上面。
-
这主要发生在您从 UTC 转换到系统特定时区时。您是否尝试过考虑输出时区的转换?
-
是的,我考虑过——但查询本身并没有在我的应用程序中运行,只是在我的后端应该给我正确的日期——有没有办法告诉我查询/nodejs/或其他东西否则使用 UTC 或最后也使用 T22:00:00.000Z 或其他东西
标签: javascript node.js postgresql react-native express