【问题标题】:Javascript date/time string to sql date timeJavascript 日期/时间字符串到 sql 日期时间
【发布时间】:2016-04-02 04:16:13
【问题描述】:

我正在传递一个日期时间:

    2015-12-23T09:57:00.000Z

到 mariaDB 中的存储过程。存储过程不喜欢 javascript 日期/时间,如何转换日期/时间以便在存储过程中使用?

我一直在玩“str_to_date”:

    select str_to_date('2015-12-23T09:57:00.000Z', '%Y-%M-%dT%h:%i:%s');

但是这会返回 (NULL)。

【问题讨论】:

  • 尝试使用Date.toLocaleString()将其作为字符串发送

标签: javascript date mariadb type-conversion


【解决方案1】:

1) 替代方案 将字符串传递给存储过程,然后在 sql 中转换为 datetime,如下所示:

select CONVERT(DATETIME,REPLACE(REPLACE('2015-12-23T09:57:00.000Z','T',' '),'Z',''))

【讨论】:

  • 这行得通,只要您添加转换类型: SELECT CONVERT(REPLACE(REPLACE('2015-12-23T09:57:00.000Z','T', ' '), 'Z ', ''), 日期时间);
【解决方案2】:

你可以使用时间戳,在 JS 中像这样获取 UNIX 时间戳

var now = new Date(),
    unixTimestamp = Math.floor(now.getTime() / 1000);
    // JS operates with miliseconds, divide by 1000 to get seconds

在mariaDB中使用函数FROM_UNIXTIME(timestamp)

【讨论】:

    【解决方案3】:

    您的%M 应该是%m。

    另一种方法:

    +-----------------------------------------------------------------------+
    | str_to_date(LEFT('2015-12-23T09:57:00.000Z',19), '%Y-%m-%dT%h:%i:%s') |
    +-----------------------------------------------------------------------+
    | 2015-12-23 09:57:00                                                   |
    +-----------------------------------------------------------------------+
    

    如果您有 5.6.4 或更高版本:

    +-----------------------------------------------------------------+
    | str_to_date('2015-12-23T09:57:00.987Z', '%Y-%m-%dT%h:%i:%s.%f') |
    +-----------------------------------------------------------------+
    | 2015-12-23 09:57:00.987000                                      |
    +-----------------------------------------------------------------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-01
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      相关资源
      最近更新 更多