在日期之间选择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查询?的主要内容,如果未能解决你的问题,请参考以下文章