【问题标题】:SQL - Get last day of every month of the current year - SQLITE3SQL - 获取当年每个月的最后一天 - SQLITE3
【发布时间】:2018-06-04 12:03:49
【问题描述】:

我匆匆浏览了 SO,发现了很多有用的查询来做到这一点,但不是我想要的,甚至他们说这是答案,但它对 sqlite3 根本不起作用。

所以我们开始吧。我想在当年每个月的最后一天返回所有数据。如下所示:(只是忽略时间,只是想将其添加到我的字段的实际外观)

Name | Date_Added
=================================
Bob  | 2018-01-31 05:23:06.021421
Bob  | 2018-02-28 14:16:03.076021
Bob  | 2018-03-31 13:16:03.076021
Bob  | 2018-04-30 13:16:03.076021
Bob  | 2018-05-31 13:16:03.076021
Bob  | 2018-06-04 13:16:03.076021
Mary | 2018-01-31 13:16:03.076021
Mary | 2018-02-28 13:16:03.076021
Mary | 2018-03-31 13:16:03.076021
Mary | 2018-04-30 13:16:03.076021
Mary | 2018-05-31 13:16:03.076021
Mary | 2018-06-04 13:16:03.076021

我尝试过这样的事情:

SELECT * FROM tableName WHERE date('now','start of month','-1 month','-1 day') ORDER BY "Name"

但它似乎仍然发送不只是最后一天的数据

任何帮助或指导将不胜感激!

【问题讨论】:

    标签: sql date sqlite


    【解决方案1】:

    如果日期是当月的最后一天,那么如果添加一天,月份会有所不同:

    SELECT * FROM tableName 
        WHERE 
            strftime("%m", Date_Added) != strftime("%m", Date_Added, "+1 day")
                AND 
            strftime("%Y", Date_Added) = strftime("%Y", "now")
    ORDER BY "Name";
    

    【讨论】:

    • 优秀的答案!我的答案是很长的路要走。但是我遇到了一个小问题,我需要获取当月的最后一个数据,所以如果 1 月的最后一个数据是 23 号,那么它必须显示 23 号而不是尝试查询 31 号?我会将您的答案标记为当前问题的正确答案。
    • 是的,这绝对是一个不同的问题。当您发布它时,请务必准确指定您要查找的数据(只是每个月的最后一行?每个月最后一天有数据的所有数据?每个 Name 的每个月的最后一行? )
    【解决方案2】:
    SELECT * FROM tableName WHERE
     "Date_added" BETWEEN date('2018-12-30','start of month','-10 month','-1 day') AND date('2018-12-30','start of month','-10 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','-9 month','-1 day') AND date('2018-12-30','start of month','-9 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','-8 month','-1 day') AND date('2018-12-30','start of month','-8 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','-7 month','-1 day') AND date('2018-12-30','start of month','-7 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','-6 month','-1 day') AND date('2018-12-30','start of month','-6 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','-5 month','-1 day') AND date('2018-12-30','start of month','-5 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','-4 month','-1 day') AND date('2018-12-30','start of month','-4 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','-3 month','-1 day') AND date('2018-12-30','start of month','-3 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','-2 month','-1 day') AND date('2018-12-30','start of month','-2 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','-1 month','-1 day') AND date('2018-12-30','start of month','-1 month','0 day') OR 
     "Date_added" BETWEEN date('2018-12-30','start of month','0 month','-1 day') AND date('2018-12-30','start of month','0 month','0 day') 
    ORDER BY "Name"
    

    相当乏味,但对我有用!

    【讨论】:

      猜你喜欢
      • 2020-03-20
      • 2010-11-06
      • 1970-01-01
      • 2022-07-22
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      相关资源
      最近更新 更多