在日期之间选择mysql查询?

Posted

技术标签:

【中文标题】在日期之间选择mysql查询?【英文标题】:Select mysql query between date? 【发布时间】:2010-11-30 23:30:22 【问题描述】:

如何从mysql表中选择过去日期到当前日期的数据?例如,选择从 2009 年 1 月 1 日到当前日期的数据??

我的列“datetime”是 datetime 日期类型。请帮忙,谢谢

编辑:

如果假设我想获取 2009 年 1 月 1 日以来的每日数据,如何编写查询?使用 count 和 between 函数?

【问题讨论】:

【参考方案1】:
select * from *table_name* where *datetime_column* between '01/01/2009' and curdate()

或使用>=<=

select * from *table_name* where *datetime_column* >= '01/01/2009' and *datetime_column* <= curdate()

【讨论】:

酷。有用。最后一个问题:如果我想显示自 2009 年 1 月 1 日以来每天的数据,必须使用计数功能吗?知道如何实施吗? 您可以使用“group by”和“order by”,如下所示: select * from [table_name] where [datetime_column] between '01/01/2009' and curdate() group by [datetime_column ] 按 [datetime_column] 排序 我试过这个:SELECT , count() from table WHERE datetime BETWEEN '2009-01-01' AND '2009-09-01' GROUP BY datetime;但计数是 1。它应该是 10、5、8 等等...... 您必须在 count() 中包含您想要计数的列名。因此,在这种情况下,您将使用 count(datetime)。 另外,您必须确保对具有相同值的字段进行分组。如果您想对日期的所有值进行分组而不考虑时间,则必须使用 DATE() 函数来获取日期时间的日期部分。【参考方案2】:

您可以使用now() 喜欢:

Select data from tablename where datetime >= "01-01-2009 00:00:00" and datetime <= now();

【讨论】:

【参考方案3】:

以上所有方法都有效,如果您只想返回天数/时间而不是输入日期,这是另一种方法

select * from *table_name* where *datetime_column* BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY)  AND NOW() 

【讨论】:

【参考方案4】:

迟到的答案,但接受的答案对我不起作用。 如果您手动设置开始日期和结束日期(不使用curdate()),请确保在结束日期指定小时、分钟和秒 (2019-12-02 23:59:59),否则您将不会得到任何信息那天的结果,即:

将包括来自2019-12-02的记录:

SELECT *SOMEFIELDS* FROM *YOURTABLE* where *YOURDATEFIELD* between '2019-12-01' and '2019-12-02 23:59:59'

不会包含来自2019-12-02的记录:

SELECT *SOMEFIELDS* FROM *YOURTABLE* where *YOURDATEFIELD* between '2019-12-01' and '2019-12-02'

【讨论】:

以上是关于在日期之间选择mysql查询?的主要内容,如果未能解决你的问题,请参考以下文章

3个日期范围之间的Mysql查询

Mysql查询使用两个日期之间检索记录

MYSQL:使用 date_format 查询两个日期之间的数据不起作用

MySQL查询以选择带有日期的记录

如何在 MySQL 中的两个日期之间获取特定日期

SQL查询选择年份在两个日期之间的行