如何使用sqlite查询获取当月或指定月份的日期?

时间:2013-10-21 09:18:32

标签: android ios sql sqlite

在我的应用程序中,我想使用当前月份中我必须在其他查询中使用的所有日期来加入。

如果我可以通过传递月份数来获取指定月份的日期,那么我也没有任何问题。

我需要使用sqlite数据库进行查询。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

引用my previous answer

SELECT date('now', 'start of month') AS Date
UNION ALL
SELECT date('now', 'start of month', '+1 days')
UNION ALL
SELECT date('now', 'start of month', '+2 days')
UNION ALL
...
UNION ALL
SELECT date('now', 'start of month', '+27 days')
UNION ALL
SELECT date('now', 'start of month', '+28 days') WHERE strftime('%m', 'now', 'start of month', '+28 days') = strftime('%m', 'now')
UNION ALL
SELECT date('now', 'start of month', '+29 days') WHERE strftime('%m', 'now', 'start of month', '+29 days') = strftime('%m', 'now')
UNION ALL
SELECT date('now', 'start of month', '+30 days') WHERE strftime('%m', 'now', 'start of month', '+30 days') = strftime('%m', 'now')

答案 1 :(得分:2)

替代精简解决方案:

SELECT DATE(JULIANDAY('NOW', 'START OF MONTH')+d1*9+d2*3+d3) AS Days FROM (
    SELECT 0 AS d1 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3
) JOIN (
    SELECT 0 AS d2 UNION SELECT 1 UNION SELECT 2
) JOIN (
    SELECT 0 AS d3 UNION SELECT 1 UNION SELECT 2
) WHERE STRFTIME('%m', Days)=STRFTIME('%m', 'NOW') ORDER BY Days;

请注意,此解决方案需要更多计算,然后是@CL one。