mysql - 检查给定日期小于 current_date

标签 mysql

我有到期日 我想检查到期日是否早于当前日期。如果到期日是 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/

相关文章:

来自 MySQLdb 的 Python foreach

php - 使用 PHP 将网页连接到数据库会产生奇怪的结果

php - 复合查询中的 mysqli_insert_id

MySQL:正则表达式匹配单词的变体,但不是一种变体?

php - 如何使用php从mysql获取表名和列?

php - cookie 中的数组,使用 pdo 查询访问

php - 无法连接到 mysql php/xampp

mysql - 如何在查询中使用日期作为条件的同时,自动执行每天的 mysql 查询?

MYSQL 在连接语句中选择最大日期

php - 价格搜索表