Как вставить переменную типа даты в MySQL через JSON

#javascript #mysql #json #api

#javascript #mysql #json #API

Вопрос:

У меня есть таблица в базе данных, которая содержит поле типа Date . Если я попытаюсь вставить дату из postman через API следующим образом:

  {
   "registerDate" : "2014-06-02"
 }
 

Это работает, но затем я пытаюсь сделать это из javascript с помощью jquery, берущего значение из входных данных в формате ГГГГ-ММ-ДД или даже присваивая переменной значение «2014-06-02», оно вставляет нулевое значение в базу данных.

  var user = new Object();
 user.registerDate = $('#register_date').val();
 createUser(url, type, JSON.stringify(user), function(user){
 });
 

или

  var user = new Object();
 user.registerDate = "2014-06-02";
 createUser(url, type, JSON.stringify(user), function(user){
 });
 

Где CreateUser:

 function createUser(url, type, user, success){
 $.ajax({
     url:url,
     type: 'POST',
     crossDomain : true,
     contentType : type,
     data : user
})
.done(function (data, status, jqxhr) {
      success(user);
})
.fail(function (jqXHR, textStatus) {
    console.log(textStatus);
});
}
 

В чем проблема, если в postman работает, а в JavaScript нет?

Комментарии:

1. Что произойдет, если вы используете alert(user.registerDate) сразу после получения ее значения?

Ответ №1:

В качестве предложения (комментарий был бы слишком большим), вы можете преобразовать вашу дату в миллисекунды, используя метод parse:

 Date.parse('2014-06-02');
 

Отправьте это как JSON:

 {'registerDate' : '1401685200'}
 

И проанализируйте ее обратно в MySQL с помощью FROM_UNIXTIME функции.

 FROM_UNIXTIME(1401685200)
 

Или, что еще лучше, вы можете сохранить свою дату как integer значение в своей базе данных и просто преобразовать ее в дату, когда вам это нужно; поскольку сохранение ее в виде строки может вызвать проблемы с кодированием.