【问题标题】:How to insert date into MySQL DATETIME column from Angular using Node.js?如何使用 Node.js 从 Angular 将日期插入 MySQL DATETIME 列?
【发布时间】: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 数据库插入需要将日期转换为哪种格式?

【问题讨论】:

    标签: mysql node.js angular


    【解决方案1】:

    为确保一致性,将所有日期存储在 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'。

    【讨论】:

      【解决方案2】:

      你可以使用这个:{{yourDate | date: 'yyy-MM-dd HH:MM:SS'}} 然后将其发送到控制器,然后保存到数据库中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-14
        相关资源
        最近更新 更多