2015-11-02 2 views
2

Я ищу для ввода пучки дат/времени в базу данных. Все они имеют следующий формат:Ввод даты в базу данных (phpMyAdmin, SQL)

2015-07-15T05:25:13.292+00:00 

Я понятия не имею, что кажется +00:00 аспект современных средств, и ничего, чтобы иметь какое-либо значение, кроме 00:00. В настоящее время у меня есть следующий оператор SQL для создания таблицы, хотя я бы хотел найти правильный способ форматирования таблицы и операторов SQL для даты.

Текущее создание таблицы:

CREATE TABLE `bookreservation` (`StartTime` varchar(50) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

Вставьте пример:

INSERT INTO `bookreservation` (`StartTime`) VALUES ('2015-07-15T00:00:00.851+00:00'); 

Что бы соответствующее CREATE TABLE -statement и как это изменило бы мое INSERT INTO заявления?

+1

я думаю +00: 00 UTC смещение , –

ответ

1

Похоже, +00:00 - это смещение часового пояса. В вашем случае вы можете использовать STR_TO_DATE(), если вы можете смело игнорировать смещение часового пояса.

STR_TO_DATE('2015-07-15T05:25:13.292+00:00','%Y-%m-%dT%h:%i:%s.%f+00:00') 

Вы можете работать это в вашем INSERT заявление:

INSERT INTO `bookreservation` (StartTime) 
VALUES (STR_TO_DATE('2015-07-15T05:25:13.292+00:00','%Y-%m-%dT%h:%i:%s.%f+00:00')); 

Это позволит вам использовать DATETIME тип для столбца:

CREATE TABLE `bookreservation` (`StartTime` DATETIME DEFAULT NULL) 
+0

Используя это форматирование, когда я импортирую файл .sql со всеми инструкциями INSERT, все просто отображается как NULL в таблице. – Shoggoth269

+0

Я также просто отрезал +00: 00, и я все еще получаю значения NULL. – Shoggoth269

+0

Вы включаете 'STR_TO_DATE()' в свои вставки? – vhu

1

+00: 00 - это информация о часовом поясе, рассказывающая вам, сколько времени ушло или что осталось от UTC. Первая плохая новость заключается в том, что стандартные форматы datetime mysql не включают информацию о часовом поясе. Часовой пояс любого значения datetime определяется настройкой часового пояса сеанса (mysql session).

Если данные о часовом поясе всегда +00: 00, то я бы не стал слишком беспокоиться об этом - если ваш сервер не находится в другом часовом поясе - я бы просто нарезал часть часового пояса и сохранил данные в datetime поле.

Если данные о часовом поясе могут быть разными (я бы попытался выяснить, может ли он быть другим, не основывайте свой вызов на появлении), тогда я бы сохранил дату-время в поле даты и времени и имел отдельное поле для часовой пояс. Поле часового пояса может иметь тип символа, если вы хотите отображать информацию о часовом поясе. Если вы хотите сделать вычисления на основе данных о часовом поясе, я бы использовал десятичное поле (разница может не быть целым часом).

Смежные вопросы