【发布时间】:2020-02-03 13:42:27
【问题描述】:
我的应用程序中有日期选择器。我想将选定的日期插入到具有DATETIME 数据类型的 MySQL 数据库列中。
这是使用 console.log(date.value) 的 Angular 中日期选择器的值:
Tue Nov 12 2019 00:00:00 GMT+0200 (Israel Standard Time)
MySQL 数据库插入需要将日期转换为哪种格式?
【问题讨论】:
我的应用程序中有日期选择器。我想将选定的日期插入到具有DATETIME 数据类型的 MySQL 数据库列中。
这是使用 console.log(date.value) 的 Angular 中日期选择器的值:
Tue Nov 12 2019 00:00:00 GMT+0200 (Israel Standard Time)
MySQL 数据库插入需要将日期转换为哪种格式?
【问题讨论】:
为确保一致性,将所有日期存储在 UTC 时区中会很有帮助。
const isoDateString: string = datePickerDate.toISOString();
这还可以通过 JSON 将日期发送到服务器。
cursor.execute("SET time_zone = '+00:00'")
在 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 可识别以下格式的 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'。
【讨论】:
你可以使用这个:{{yourDate | date: 'yyy-MM-dd HH:MM:SS'}} 然后将其发送到控制器,然后保存到数据库中
【讨论】: