我有到期日 我想检查到期日是否早于当前日期。如果到期日是 ex:27-03-2011。如果到期时间是 ex:27-04-2011,我想做一些操作,不需要做任何事情。
我只想查看和报告一个月的详细信息, 过期一个月后我不想检查 怎么查询?
表1
字段类型
到期日
例如:2012-01-20
最佳答案
请使用 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
或类似的查询。有几点需要注意:
- created 上应该有一个索引以加快速度
- 创建的列名不是表达式的一部分,以使其能够与索引一起使用。我们专门编写“created > NOW() - INTERVAL 5 DAY”而不是“created + INTERVAL 5 DAY > NOW()” - 此表达式使用在表达式中创建的列名,因此不可能使用索引。
- 如果将其与删除查询一起使用,基本上就是从时间箭头的左侧删除旧数据,在时间箭头的右侧插入新数据。也许您想使用 MySQL PARTITIONS,然后使用 PARTITION BY RANGE 您的表。这将允许您通过使用 ALTER TABLE DROP PARTITION 删除旧数据,丢弃 5 天前的分区,为明天创建一个新分区。在许多情况下,这比 DELETE 快得多。
关于mysql - 检查给定日期小于 current_date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5457097/