2016-10-28 23 views
0

我有两个表格,它们都有一个时间字段。我试图从这两个表中获取数据,当我运行查询时,结果是好的(我在找什么)。创建表格时更改时间字段

Start_time   Break_time    Finish_time 
2016-01-01 01:00:00 2016-01-01 01:05:51  2016-01-01 01:05:59 
2016-01-01 01:00:00 2016-01-01 01:05:51  2016-01-01 01:06:12 
2016-01-01 01:00:00 2016-01-01 01:06:26  2016-01-01 01:06:26 
2016-01-01 01:00:00 2016-01-01 01:06:21  2016-01-01 01:06:35 
2016-01-01 01:00:00 2016-01-01 01:06:49  2016-01-01 01:06:59 
2016-01-01 01:00:00 2016-01-01 01:06:51  2016-01-01 01:07:24 
2016-04-14 12:03:00 2016-04-14 12:27:39  2016-04-14 12:28:04 
2016-04-14 12:03:00 2016-04-14 12:27:28  2016-04-14 12:28:07 
2016-04-14 12:03:00 2016-04-14 12:27:38  2016-04-14 12:28:07 
2016-04-14 11:30:00 2016-04-14 12:25:22  2016-04-14 12:28:08 
2016-04-14 12:03:00 2016-04-14 12:27:57  2016-04-14 12:28:08 

但是,当我尝试创建表以便结果进入时,时间完全改变。

Start_time   Break_time    Finish_time 
2016-01-01 01:00:00 2016-01-01 01:05:51  2016-01-01 01:05:59 01 
2016-01-01 01:00:00 2016-01-01 01:05:51  2016-01-01 01:06:12 01 
2016-01-01 01:00:00 2016-01-01 01:06:26  2016-01-01 01:06:26 01 
2016-01-01 01:00:00 2016-01-01 01:06:21  2016-01-01 01:06:35 01 
2016-01-01 01:00:00 2016-01-01 01:06:49  2016-01-01 01:06:59 01 
2016-01-01 01:00:00 2016-01-01 01:06:51  2016-01-01 01:07:24 01 
2016-01-01 01:00:00 2016-01-01 01:07:14  2016-01-01 01:07:27 01 
2016-01-01 01:00:00 2016-01-01 01:06:26  2016-01-01 01:07:32 01 
2016-01-01 01:00:00 2016-01-01 01:07:03  2016-01-01 01:07:49 01 
2016-01-01 01:00:00 2016-01-01 01:07:51  2016-01-01 01:08:01 01 
2016-01-01 01:00:00 2016-01-01 01:07:44  2016-01-01 01:08:07 01 
2016-01-01 01:00:00 2016-01-01 01:07:47  2016-01-01 01:08:08 01 
2016-01-01 01:00:00 2016-01-01 01:07:06  2016-01-01 01:08:31 01 
2016-01-01 01:00:00 2016-01-01 01:08:25  2016-01-01 01:08:53 01 

该START_TIME在第一个表是TIMESTAMP(类型),CURRENT_TIMESTAMP(默认值),在更新CURRENT_TIMESTAMP(额外)。在第二个表中,Break_time和Finish_time都是VARCHAR(TYP),NULL(默认),无(额外)。 我认为这是造成这个问题的原因,但无法弄清楚如何解决这个问题。 有什么想法吗?

+0

有什么改进? – tanaydin

回答

0

MySQL根据当前时区将您插入的时间转换为UTC。另外,它会转换回当前的选择。这里有类似的问题。

How do I get the current time zone of MySQL?

但你必须使用DATETIME领域Break_time和Finish_time。在插入MySQL时不会因为它们的类型而转换它们。

+0

感谢以上,这是有道理的。 HowEver,当我尝试将这些字段转换为DATETIME字段时,我不断收到错误消息“函数str_to_date”的错误日期时间值:''。 – Drake

+0

UPDATE 2016_Data SET startt_time = STR_TO_DATE(start_time,'%Y-%m-%d%H:%i:%s') – Drake

+0

是不是start_time已经是约会?看起来你应该在定义为varchar的其他字段上使用这个函数。最好添加一个类似Break_time_tmp的日期时间字段,并将此字段值更新为DATETIME值而不是字符串。当所有行都更新时,删除Break_time并将Break_time_tmp重命名为Break_time – tanaydin