【问题标题】:How to Delete MSSQL Table Datetime GETDATE() Columns if they are One Year Old or Older Using PHP如何使用 PHP 删除 MSSQL 表日期时间 GETDATE() 列(如果它们是一年或更早)
【发布时间】:2014-05-21 19:52:16
【问题描述】:

我的专栏名为order_date,其数据为:

datetime NOT NULL DEFAULT GETDATE(),

这将使数据显示为:

Apr 8 2014 3:24PM

我想知道我可以使用什么 PHP 查询来删除这个 MSSQL 表中的任何行(如果它们是一岁或以上)。

我还想要一种方法来测试它是否有效。 (即:修改当前行的 order_date 列,使其大一岁。)

如果有人可以帮助我解决这个问题,我们将不胜感激。 T

【问题讨论】:

  • PHP 与这个问题无关。这纯粹是一个 SQL 问题...除非您在 php 中生成“去年”日期,在这种情况下,它与 php 相关,但仍然主要是 sql-only。
  • 不完全。您可以通过 PHP 修改 SQL 表。例如DELETE FROM real_tracking_orders where STR_TO_DATE(order_time, '%M %e, %Y')< DATE_ADD(NOW(), Interval -12 MONTH).
  • 是的,但这只是 sql。无论您使用哪种语言,它都是相同的 sql:c、C#、perl、ruby、blah blah blah
  • 不,因为您也在使用 PHP。这不仅仅是 SQL。

标签: php sql sql-server time sql-delete


【解决方案1】:
DELETE FROM TABLE_NAME 
WHERE order_date < DATEADD(YEAR, -1, GETDATE())

此查询可以使用在order_date 列上定义的索引(如果有)。

【讨论】:

  • 谢谢您的帮助。我可以交换赞成票吗?
  • 交换赞成票?我们现在是在买卖选票吗?请不要赞成我的回答,因为我不会赞成你的问题,我不会赞成你的问题的原因是因为你可以用谷歌搜索它并在更短的时间内找到解决方案,然后你需要在这里发布一个问题.我给你的解决方案比你接受的解决方案更好,因为这将利用你表上的任何索引。无论如何你不在这里交换选票,最好的答案会得到更多的关注和选票。谢谢。
  • 我只是在暗示我们都赢得了赞成票。我认为仅仅因为可以通过谷歌获得信息并不能使 Stack Overflow 成为最后的手段。虽然,我个人曾尝试使用谷歌找到这个答案并且没有运气。我认为您获得了赞成票,因为您的回答是有效的。我相信我赢得了赞成票,因为我的问题与堆栈溢出社区相关且有用。
【解决方案2】:
delete from tracking_orders where DATEDIFF (year, order_date, GETDATE()) > 1

在这里查看:

http://technet.microsoft.com/en-us/library/ms189794.aspx

【讨论】:

  • 如何测试这是否有效?目前我所有的行都是今天创建的,所以它们基本上都是Apr 8 2014 3:24PM
  • 只需更改 DATEDIFF 中的日期部分并将其设置为“小时”。 delete from tracking_orders where DATEDIFF (hour, order_date, GETDATE()) &gt; 1 将删除所有超过一小时的记录
  • 谢谢,它有效。我可以交换你的赞成票吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2011-04-21
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多