从DATE和TIME创建DATETIME

时间:2009-08-23 13:59:46

标签: mysql datetime

MySQL是否有办法从DATE类型的给定属性和TIME类型的给定属性创建DATETIME?

6 个答案:

答案 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)

要从两个单独的DATETIMEDATE值中获取 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');