Как использовать MomentJS с пользовательскими запросами nodejs и mysql

#mysql #sql #node.js

Вопрос:

Я хочу реализовать следующий sql-запрос:

 date_count = await customQuery(  `  SELECT   COUNT(org.name   OR c.name   OR co.name   OR seg.arrival_details   OR seg.departure_details   OR seg.segment_airline_id   OR seg.segment_arrival_airport_code  OR seg.segment_departure_airport_code   OR seg.segment_flight_number   OR seg.trip_id   OR b.trip_id  OR bf.pnr_no   OR bf.airline_pnr_no   OR b.booking_status   OR b.created   OR org.organisation_id   OR org.name  ) AS total_count  FROM   segment_details AS seg  LEFT JOIN trip_details AS tr ON seg.trip_id = tr.trip_id  LEFT JOIN bookings_flight AS bf ON tr.bookings_flight_id = bf.booking_flight_id  LEFT JOIN bookings AS b ON bf.booking_id = b.booking_id  LEFT JOIN organisation AS org ON b.organisation_id = org.organisation_id  LEFT JOIN city AS c ON org.city_id = c.city_id  LEFT JOIN country AS co ON org.country_id = co.country_id  WHERE   seg.segment_departure_date BETWEEN   ${moment(date.startDate).startOf('day').format("YYYY-MM-DD HH:mm:ss") }  AND ${moment(date.endDate).endOf('day').format("YYYY-MM-DD HH:mm:ss")}   `)  

Но я получаю следующую ошибку:

 UnhandledPromiseRejectionWarning: Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '00:00:00  

мой результат на свидании выглядит так : ‘2021-10-01T08:00:00.000 Z’

и когда я применяю к нему moment js, мой результат выглядит следующим образом: ‘2021-10-01 00:00:00’

Я использую MySQL, SQL Yog

Как я могу исправить эту ошибку? Любая помощь или предложение будут оценены по достоинству.

Ответ №1:

Постарайтесь окружить свои даты одинарными кавычками:

 ... seg.segment_departure_date BETWEEN   '${moment(date.startDate).startOf('day').format("YYYY-MM-DD HH:mm:ss")}'  AND '${moment(date.endDate).endOf('day').format("YYYY-MM-DD HH:mm:ss")}'   

Ответ №2:

Попробуй это. Вам нужно добавить одинарные кавычки

 const startDate = moment(date.startDate).startOf('day').format("YYYY-MM-DD HH:mm:ss"); const endDate = moment(date.endDate).endOf('day').format("YYYY-MM-DD HH:mm:ss");  ...  WHERE   seg.segment_departure_date BETWEEN '${startDate}' AND '${endDate}'