我需要更改数据库中日期时间的时间部分。
我得到的是在数据库中:'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
)
任何提示如何解决此错误并实现所述功能?
答案 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')
等等。