如何使用Node.js从Angular将日期插入MySQL DATETIME列?

问题描述 投票:1回答:2

我的应用程序中有日期选择器。我想将所选日期插入数据类型为DATETIME的MySQL数据库列中。

这是使用console.log(date.value)在Angular中的日期选择器的值:

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

MySQL插入日期需要转换成哪种格式?

mysql node.js angular
2个回答
0
投票

您可以使用此:{{您的日期|日期:'yyy-MM-dd HH:MM:SS'}},然后将其发送到控制器,然后保存到db


0
投票

为了确保一致性,将所有日期存储在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),格式为:'YYYY-MM-DD HH:MM:SS'

const isoDate = new Date(isoDateString);
const mySQLDateString = isoDate.toJSON().slice(0, 19).replace('T', ' ');

MySQL Documentation

MySQL识别以下格式的DATETIME和TIMESTAMP值:

作为'YYYY-MM-DD HH:MM:SS''YY-MM-DD HH:MM:SS'中的字符串格式。这里也允许使用“宽松”语法:任何标点符号字符可用作日期部分或时间之间的分隔符部分。例如,“ 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”。

以YYYYMMDDHHMMSS或YYMMDDHHMMSS格式提供的数字该数字作为日期有意义。例如19830905132800和830905132800被解释为“ 1983-09-05 13:28:00”。

© www.soinside.com 2019 - 2024. All rights reserved.