如果order_date
列超过一年,我正在尝试创建一个PHP查询来删除SQL表行。我还想要第二个查询,如果同一列是一天,表行将被删除。
为了更深入,order_date
列位于我当前的表tracking_orders
中,并且是使用查询的一部分创建的:order_date datetime NOT NULL DEFAULT GETDATE(),
。 tracking_orders
表目前看起来像这样:
order_date tracking_order account_id
Apr 7 2014 3:49PM 1 1
Apr 7 2014 3:51PM 2 1
我问这个问题的日期是2014年4月8日,所以我试图在order_date
数据是2013年4月7日的情况下进行查询以删除行,如果是,则尝试删除行的另一个查询
order_date
数据是2014年4月7日。另外,如果数据超过1年,我仍然希望删除它。例如,2012年4月7日。
对于代码示例,我正在寻找类似的东西:
$sql = 'DELETE * from tracking_orders WHERE order_date == DATE_SUB(getdate(), INTERVAL 1 YEAR)';
这样的事情,在一天后删除:
$sql = 'DELETE * from tracking_orders WHERE order_date == DATE_SUB(getdate(), INTERVAL 1 DAY)';
注意:上述方法不起作用,因为DATE_SUB
是MySQL语法,而我正在使用MSSQL。
感谢您的帮助。非常感谢所有帮助。
答案 0 :(得分:2)
试试这个:
DELETE from tracking_orders
WHERE DATEDIFF(dy,order_date, getdate()) = 1
OR DATEDIFF(yy,order_date, getdate()) > 1
检查差异为1天的第一个条件,以及差异大于1年的第二个条件。请注意,这是严格按日历进行的,因此即使时间差小于24小时,下面也会返回1:
select datediff (dy, '2013-01-01 23:00:00.000', '2013-01-02 22:00:00.000')
要检查24小时差异,请仅使用DATEDIFF(hh,order_date, getdate()) = 1