2015-12-28 2 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          | 
+-----------------------------------------------------------------+ 
Смежные вопросы