PostgreSQL Дата - один выходной с моим запросом - PullRequest
1 голос
/ 27 января 2020

Я работаю над собственным приложением React с Expo, подключенным к 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 msgstr "несмотря на то, что он правильно хранится в БД с правильной датой активности.

Это не только неправильно, когда я получаю данные в браузере с localhost / api / ..., но и неправильно отображается внутри моего приложения.

Я думаю, что это может быть чем-то связано с установленной меткой времени? он установлен на T22:00:00.000Z, как вы можете видеть. Я не знаю, какую дату может использовать браузер или nodejs (express), но результаты отстают на 1 день.

1 Ответ

1 голос
/ 27 января 2020

Если вы хотите получить записи между двумя датами, используйте

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

и убедитесь, что вы передаете дату в правильном формате, например YYYY-MM-DD

, используя момент, когда мы можем отформатировать наш дата в необходимом формате

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

Таким образом, когда вы получите свой результат, передайте результат действия дату, указав тот момент, когда будет возвращена дата в формате ГГГГ-ММ-ДД

Попробуйте использовать формат (datee , 'dd - MM - гггг'), например

SELECT DATE_FORMAT(activitydate, "%Y-%m-%d") // try instead of activitydate 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...