MySQL是否有办法从DATE类型的给定属性和TIME类型的给定属性创建DATETIME?
答案 0 :(得分:39)
从MySQL文档复制:
TIMESTAMP(expr), TIMESTAMP(expr1,expr2)
使用单个参数,此函数将日期或日期时间表达式expr作为日期时间值返回。使用两个参数,它将时间表达式expr2添加到日期或日期时间表达式expr1,并将结果作为日期时间值返回。
mysql> SELECT TIMESTAMP('2003-12-31');
-> '2003-12-31 00:00:00'
mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-> '2004-01-01 00:00:00'
答案 1 :(得分:36)
要从两个单独的DATETIME
和DATE
值中获取 true TIME
值:
STR_TO_DATE(CONCAT(date, ' ', time), '%Y-%m-%d %H:%i:%s')
答案 2 :(得分:17)
datetime = CONCAT(date, ' ', time);
答案 3 :(得分:10)
您可以使用ADDTIME()
:
ADDTIME(CONVERT(date, DATETIME), time)
date
可以是日期字符串或DATE
对象。time
可以是时间字符串或TIME
对象。在MySQL 5.5中测试。
答案 4 :(得分:0)
无需创建和解析字符串,只需在日期中添加间隔:
set @dt_text = '1964-05-13 15:34:05.757' ;
set @d = date(@dt_text) ;
set @t = time(@dt_text) ;
select @d, @t, @d + interval time_to_sec( @t ) second;
然而,这会截断微秒。
我同意Muki - 一定要考虑时区和夏令时!
答案 5 :(得分:0)
select timestamp('2003-12-31 12:00:00','12:00:00');
有效,当字符串格式正确时。否则,您可以仅使用str_to_date包含时间。
select str_to_date('12/31/2003 14:59','%m/%d/%Y %H:%i');