【问题标题】:Get records of current month [duplicate]获取当月记录[重复]
【发布时间】:2014-02-12 03:49:40
【问题描述】:

如何从 MySql 数据库的表中选择当前月份记录?

就像现在一样,当前月份是一月。我想得到一月份的记录,我的表列的数据类型是timestamp。我想知道sql查询。

谢谢

【问题讨论】:

标签: mysql sql date select timestamp


【解决方案1】:

查看MySQL Datetime函数:

试试这个:

SELECT * 
FROM tableA 
WHERE YEAR(columnName) = YEAR(CURRENT_DATE()) AND 
      MONTH(columnName) = MONTH(CURRENT_DATE());

【讨论】:

  • 错误:将为每一行计算MONTH()。最好尝试在列上进行范围比较。
  • @Sebastian 请提供答案
  • @Sebastian 为什么不提供答案?
  • 页面顶部有两个重复链接。两者都提供了很好的答案。我为什么要添加另一个?无论如何:添加重复问题的答案是不可能的。
  • select * from t.stuff where date between DATE_FORMAT(NOW(),"%Y-%m-01") and LAST_DAY(NOW());
【解决方案2】:

这个查询应该适合你:

SELECT *
FROM table
WHERE MONTH(columnName) = MONTH(CURRENT_DATE())
AND YEAR(columnName) = YEAR(CURRENT_DATE())

【讨论】:

  • 这不太正确。如果我有 2015-12-25 和 2016-12-30 的记录,它们都会被选中,我认为这不是预期的行为。请尝试以下@saharsh-shah 的解决方案。
  • 错误:将为每一行计算MONTH()。最好尝试在列上进行范围比较。
  • @Sebastian 请提供答案
  • 该问题被标记为重复,请参阅链接问题。无法添加新答案。您应该选择columnName > "2017-11-01 00:00:00"。
  • @Pila 的评论当时是准确的,但此后已针对查询更新了答案以产生正确的功能。
【解决方案3】:

试试这个查询:

SELECT *
FROM table 
WHERE MONTH(FROM_UNIXTIME(columnName))= MONTH(CURDATE())

【讨论】:

  • 错误:将为每一行计算MONTH()。最好尝试在列上进行范围比较。
  • @Sebastian 请提供答案
猜你喜欢
  • 2022-01-25
  • 2023-02-21
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 2017-12-05
相关资源
最近更新 更多