【问题标题】:mysql getting all possible months from datetime fieldmysql 从日期时间字段中获取所有可能的月份
【发布时间】:2012-01-30 14:30:56
【问题描述】:

所以我有一个包含数百条记录的表。并且具有日期时间格式的文件名“created”类型。现在我想用几个月来制作和存档。例如一月、二月......等。我需要创建查询来查找所有可能的月份。例如,如果我的记录从 2011/05/01 开始到现在,我将需要获取月份,这意味着月份 5、6、7、8、9、10、11、12。 有办法吗???

【问题讨论】:

  • 您要选择特定月份和年份的记录吗?
  • 100 条记录...为什么要存档...即使有 100,000 条为什么要存档...如果您担心性能,MySQL 可以毫不费力地解决这个问题。如果您想从档案中取回数据,您还必须“加入”对档案数据的任何查询,这会导致其自身的性能下降。

标签: mysql datetime archive


【解决方案1】:

是的,使用DATE_FORMAT 函数和其他日期和时间函数。

更多详情here

例如,如果您想要 2011 年 12 月的所有记录:

SELECT * FROM posts WHERE YEAR(created) = 2011 AND MONTH(created) = 12

【讨论】:

  • 天才 :) 帮了我很多!我将使用的确切查询是“SELECT Distinct MONTH(date) FROM events”
  • 但是,您可能希望接受 Karlson 的回答,因为它更完整。
【解决方案2】:

如果您正在查看 created 字段中的所有月份列表(据我了解您的查询),请执行以下操作:

SELECT DISTINCT(MONTH(created)) FROM posts;

结果集将是该字段中唯一月份的列表。如果这会抱怨然后尝试:

SELECT DISTINCT(MONTH(DATE(created))) FROM posts;

然后您可以将MONTH 替换为MONTHNAME 并获取名称。我没有在这些查询中添加 WHERE 子句,但您可以根据需要限制正在查看的数据集。

如需了解更多信息,请查看http://dev.mysql.com/doc/refman/5.1/en/functions.html,其中列出了 MySQL 原生提供的大量函数。

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2023-01-09
    相关资源
    最近更新 更多