我想在数据库中输入一堆日期/时间。所有这些都具有以下格式:
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语句?
答案 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)