如何用doctrine更改datetime值的时间部分?

时间:2010-09-24 13:28:38

标签: sql mysql datetime doctrine

我需要更改数据库中日期时间的时间部分。

我得到的是在数据库中:'2010-01-01 01:00:00' 我需要将此更新为'2010-01-01 03:00:00' 我唯一的事情是'03:00:00'

当我使用教条时,我可以遍历所有对象,但这会降低性能。 所以我尝试的是:

$q = Doctrine_Query::create()
                ->update('Something s')
                ->set('start_at', 'DATEADD(DATESUB(start_at,HOUR_SECOND TIME(start_at)), HOUR_SECOND ?)', $doctrine_article->start_time)
                ->set('start_at', 'DATEADD(DATESUB(end_at,HOUR_SECOND TIME(end_at)), HOUR_SECOND ?)', $doctrine_article->end_time)
                ->where('s.some_id = ?',$doctrine_article->id)
                ->andWhere('s.start_at > ?',$current_date)
                ->execute();

(的更新
再解释一下:
我试图删除当前Datetime的时间部分,所以我得到'2010-01-01 00:00:00',然后在给定时间('03:00:00')添加到此,所以最后它应该是想要'2010-01-01 03:00:00'

但这会导致错误(1064 You have an error in your SQL syntax

任何提示如何解决此错误并实现所述功能?

1 个答案:

答案 0 :(得分:1)

使用DATE函数删除时间部分会更容易。之后,您可以使用不同的方式再次添加时间:

start_at = DATE(start_at) + INTERVAL 3 HOUR

start_at = DATE(start_at) + INTERVAL 10800 SECOND

start_at = CONCAT(DATE(start_at), ' ', '03:00:00')

等等。