2015-12-28 247 views
0

我传递的日期时间:javascript日期/时间字符串转换为SQL日期时间

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)。

+1

尝试使用'Date.toLocaleString()发送它作为字符串' – Rajesh

回答

1

1)替代 通字符串转换成存储过程,然后在SQL转换为datetime这样的:

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

这个工作,只要你添加转换类型:SELECT CONVERT(REPLACE(REPLACE('2015-12-23T09:57:00.000Z','T',''),'Z',''),DATETIME); – SPlatten

1

您可以使用时间戳,在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)

0

您的%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          | 
+-----------------------------------------------------------------+ 
相关问题