如何使用date_add将年,月,日,小时,分钟,秒添加到mysql日期?

时间:2014-06-02 16:20:27

标签: php mysql sql

在mysql数据库中添加到datetime类型列的最佳方法是什么?我尝试使用DATE_ADD但它只在我添加单个日期/时间时才有效:

DATE_ADD(start_date, INTERVAL :dayCount DAY)

这不起作用:

DATE_ADD(DATE_ADD(start_date, INTERVAL :dayCount DAY), INTERVAL :hourCount HOUR)

我尝试按照一些人的建议添加微秒:

$startMicro = strtotime($startDiff->format("%Y-%m-%d %H:%i:%s")) * 1000; // 943920000000
start=DATE_ADD(start, INTERVAL :startMicro MICROSECOND)

我终于完成了它的工作: 在PHP中:     $ minutesDiff =(strtotime($ start) - strtotime($ row-> start))/ 60; 在SQL语句中:     start = DATE_ADD(start,INTERVAL:minutesDiff MINUTE)

感谢大家的帮助。

2 个答案:

答案 0 :(得分:2)

将要添加的总时间转换为您要添加的最小时间增量,因此,而不是1天,1小时,您需要25小时。而不是1小时,1分钟,1秒,你会做3601秒等等。

如果需要,您可以嵌套它们,但语法错误,在第二个INTERVAL之前缺少逗号,应该是:

DATE_ADD(DATE_ADD(start_date, INTERVAL :dayCount DAY), INTERVAL :hourCount HOUR)

答案 1 :(得分:1)

您可以将此语法用于此目的:

start_date + INTERVAL :dayCount DAY + 
             INTERVAL :hourCount HOUR + 
             INTERVAL :minCount MINUTE

INTERVAL类型有年,季,月,周,日,小时,分钟,第二和麦克风。

对于5.6.4之前的MySQL版本,微秒没有任何意义。

见这里:http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-add