将日期输入数据库(phpMyAdmin,SQL)

时间:2015-11-02 11:27:34

标签: mysql datetime

我想在数据库中输入一堆日期/时间。所有这些都具有以下格式:

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语句?

2 个答案:

答案 0 :(得分:1)

+00:00是时区信息,告诉您UTC的前方或后方的给定时间。第一个坏消息是标准的mysql日期时间格式不包括时区信息。任何日期时间值的时区由会话(mysql会话)时区设置确定。

如果时区数据总是+00:00,那么我不会太担心它 - 除非您的服务器位于不同的时区 - 我只需要切割时区片段并将数据存储在日期时间字段中

如果时区数据可能不同(我会努力找出它是否可能不同,不要根据外观进行调用),那么我会将日期时间存储在日期时间字段中,并为其提供单独的字段时区。如果您只想显示时区信息,则时区字段可以是字符类型。如果你想根据时区数据进行计算,那么我会使用一个十进制字段(差异可能不是整整一个小时)。

答案 1 :(得分: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)