【问题标题】:Find out which months have data logged in MYSQL database?找出哪些月份在 MYSQL 数据库中记录了数据?
【发布时间】:2015-06-18 02:06:21
【问题描述】:

在我的数据库中,我以02 Mar 2015 格式存储了每个客户订单的日期

我有 3 月和 4 月的数据,我想要一个仅返回这 2 个月的查询。一旦我有五月的数据,它将返回三个月等。

我尝试使用的 SQL 语法是:

SELECT DISTINCT MONTH(DATE_FORMAT(date,'%d %b %y')) FROM orders

但是,这会返回 0 行。我认为这是日期格式的问题。

编辑:

表格中的样本数据:

标识 |日期 |时间 | order_id |项目 |数量
1 | 2015 年 3 月 2 日 | 14:22 | 1029 |国家德比 | 9
1 | 2015 年 4 月 5 日 | 13:58 | 1029 |印度教 | 10

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    试试

    SELECT DISTINCT MONTH(`order_date`) FROM `orders`
    

    其中order_dateorders 中的日期字段

    【讨论】:

    • 我已经尝试过了,但也返回了 0 行。我认为我遇到的问题是我(愚蠢地)以“2015 年 3 月 2 日”格式而不是 2015-03-03 02:33:26 格式存储日期。还有其他想法吗?
    • date 是一个 mysql 函数...订单表中日期字段的名称是什么,请发布架构和几个示例行...如果您的日期字段确实命名为 date 然后 encalsulate就像date 使用反引号
    • 它是“日期”,也许这引起了冲突?
    • 发布您的架构和一些示例数据
    • 已编辑主帖,对格式不佳表示歉意!
    【解决方案2】:

    注意:答案假定日期列是 varchar 而不是 datetime 数据类型。

    DATE_FORMAT() 函数用于以不同格式显示日期/时间数据。注意:这假设数据是日期时间数据类型。

    STR_TO_DATE() 通过将字符串和特定格式字符串作为参数返回一个日期时间值。在SQL Fiddle demo 中查看下面的代码。

    select DISTINCT MONTH(STR_TO_DATE(date, '%d %b %y')) from orders
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 2012-03-07
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 2014-06-05
      • 1970-01-01
      相关资源
      最近更新 更多