检查给定日期是否小于current_date

时间:2011-03-28 09:35:09

标签: mysql

我有失效日期我想检查过期日期是否小于当前日期。如果到期日是例如:27-03-2011。如果到期日期为ex,我想做一些操作:27-04-2011无需做任何事情。

我想检查并报告一个月的详细信息, 在到期日的一个月后,我不想检查 怎么做查询?

table1

字段类型

expdate date

例如:2012-01-20

1 个答案:

答案 0 :(得分:5)

请使用MySQL日期和时间格式,它们的格式为YYYY-MM-DD(ISO日期格式)。所有MySQL日期和时间函数http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html都使用此格式。

MySQL还有日期和时间算术。您可以编写诸如“NOW() - INTERVAL 5 day”之类的表达式,这也在此处解释http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

root@localhost [(none)]> select now(), now() - interval 5 day\G
*************************** 1. row ***************************
                 now(): 2011-03-28 13:49:24
now() - interval 5 day: 2011-03-23 13:49:24
1 row in set (0.00 sec)

要列出超过5天的所有商品,请使用

SELECT id FROM sometable WHERE created > NOW() - INTERVAL 5 DAY

或类似的查询。有几点需要注意:

  • 创建的索引应存在以使此快速
  • 创建的列名称不是表达式的一部分,以使其能够与索引一起使用。我们专门写'创建> NOW() - INTERVAL 5 DAY'而非'创建+ INTERVAL 5 DAY> NOW()' - 此表达式使用在表达式中创建的列名,因此无法使用索引。
  • 如果您使用删除查询,则基本上从时间箭头的左侧删除旧数据,在时间箭头的右侧插入新数据。也许你想使用MySQL PARTITIONS然后PARTITION BY RANGE你的表。这将允许您通过使用ALTER TABLE DROP PARTITION删除旧数据,比如5天前丢弃分区,为明天创建一个新分区。在许多情况下,这比DELETE快得多。