Как вставить дату в столбец MySQL DATETIME из Angular, используя Node.js? - PullRequest
1 голос
/ 05 октября 2019

В моем приложении есть указатель даты. Я хочу вставить выбранную дату в столбец базы данных MySQL с типом данных DATETIME.

Это значение средства выбора даты в Angular с использованием console.log(date.value):

Tue Nov 12 2019 00:00:00 GMT+0200 (Israel Standard Time)

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

Ответы [ 2 ]

1 голос
/ 05 октября 2019

Для обеспечения согласованности полезно хранить все даты в часовом поясе 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

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».

0 голосов
/ 05 октября 2019

вы можете использовать это: {{yourDate |date: 'yyy-MM-dd HH: MM: SS'}}, затем отправьте его на контроллер, а затем сохраните в db

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...