Для обеспечения согласованности полезно хранить все даты в часовом поясе UTC.
Шаг 1: преобразование даты JavaScript в ISO (часовой пояс UTC)
const isoDateString: string = datePickerDate.toISOString();
Это также позволяет отправлять дату через JSON на сервер.
Шаг 2: убедитесь, чтоЧасовой пояс MySQL: UTC
cursor.execute("SET time_zone = '+00:00'")
Шаг 3. Формат даты для вставки MySQL
На сервере Node.js проанализируйте строку даты ISO (из шага 1) и отформатируйте как: 'ГГГГ-ММ-ДД ЧЧ: ММ: СС'
const isoDate = new Date(isoDateString);
const mySQLDateString = isoDate.toJSON().slice(0, 19).replace('T', ' ');
MySQL распознает значения DATETIME и TIMESTAMPв следующих форматах:
в виде строки в 'ГГГГ-ММ-ДД ЧЧ: ММ: СС' или 'ГГ-ММ-ДД ЧЧ: ММ: СС' *Формат 1028 *. Здесь также разрешен «смягченный» синтаксис: любой знак пунктуации может использоваться в качестве разделителя между частями даты или частями времени. Например, «2012-12-31 11:30:45», «2012 ^ 12 ^ 31 11 + 30 + 45», «2012/12/31 11 * 30 * 45» и «2012 @ 12 @ 31 11». ^ 30 ^ 45 'эквивалентны.
Единственный разделитель, распознаваемый между частью даты и времени и частью доли секунды, является десятичной точкой.
Части даты и времени могут быть разделены Tа не пробел. Например, '2012-12-31 11:30:45' '2012-12-31T11: 30: 45' эквивалентны.
В виде строки без разделителей в YYYYMMDDHHMMSS или YYMMDDHHMMSS. формат, при условии, что строка имеет смысл в качестве даты. Например, «20070523091528» и «070523091528» интерпретируются как «2007-05-23 09:15:28», но «071122129015» является недопустимым (имеет бессмысленную мелкую часть) и становится «0000-00-00 00:00:00 '.
Как число в формате ГГГГММДДЧЧММСС или ГГММДДЧЧММСС при условии, что число имеет смысл как дата. Например, 19830905132800 и 830905132800 интерпретируются как «1983-09-05 13:28:00».