gpt4 book ai didi

javascript - PostgreSQL 日期与我的查询休息一天

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:25 26 4
gpt4 key购买 nike

我正在开发一个带有 Expo 的 React Native 应用程序,该应用程序连接到 PostgresDB。

我有一个查询,它在两个日期之间加载一些数据,如下所示:

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 天。

最佳答案

如果您想获取两个日期之间的记录,请使用

WHERE activitydate between `${startDate}` and `${endDate}`

还要确保您以正确的格式传递日期,例如 YYYY-MM-DD

使用 moment 我们可以将日期格式化为所需的格式

 moment(our_date).format('YYYY-MM-DD')  // npm install moment --save

因此,当您获得结果时,请将结果 Activitydate 传递给 moment,它将以 YYYY-MM-DD 格式返回日期

尝试使用 format(datee,'dd - MM - yyyy') 函数,例如

SELECT DATE_FORMAT(activitydate, "%Y-%m-%d") // try instead of activitydate 

关于javascript - PostgreSQL 日期与我的查询休息一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59930947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com