从SQLITE数据库中选择唯一月份和年份

时间:2015-02-26 11:32:29

标签: sql sqlite

我在费用表中有一个名为(日期)的列,该表在结构“2015-02-15”中显示日期。我想建立一个Distinct独特月份和年份的列表,以便用户可以选择要显示的月份。我尝试过使用以下answer而没有任何运气。

"1" "1" "Food Shopping" "156"   "2015-01-15"
"2" "1" "Water" "200"   "2015-02-15"
"3" "2" "Car Maintenance"   "30"    "2014-12-15"
"4" "4" "Boobs" "200"   "2015-02-15"

理想情况下我应该

December 2014
January 2015
February 2015

有人能指出我正确的方向吗?感谢。

2 个答案:

答案 0 :(得分:2)

您的date列格式正确,因此无需使用unixepoch修饰符。 只需将其从original query

中删除即可
SELECT CASE m 
       WHEN '01' THEN 'January' 
       WHEN '02' THEN 'Febuary' 
       WHEN '03' THEN 'March' 
       WHEN '04' THEN 'April' 
       WHEN '05' THEN 'May' 
       WHEN '06' THEN 'June' 
       WHEN '07' THEN 'July' 
       WHEN '08' THEN 'August' 
       WHEN '09' THEN 'September' 
       WHEN '10' THEN 'October' 
       WHEN '11' THEN 'November' 
       WHEN '12' THEN 'December' 
       END || ' ' || y AS dates
FROM 
(
  SELECT DISTINCT 
         strftime('%m', date) m,
         strftime('%Y', date) y
    FROM expenses
)
ORDER BY y, m

答案 1 :(得分:1)

如果您可以使用ISO标准格式,则可以执行以下操作:

select distinct date(date, '%Y-%m')
from expenses;

如果没有,您可以使用逻辑来获取月份名称:

select distinct date(date, '%Y') || ' ' ||
       (case when date(date, '%m') = '01' then 'January'
             . . .
             when date(date, '%m') = '12' then 'December'
        end)
哎呀,我把年份放在第一年,然后是月份。如果你愿意,可以反转它们。