我已经知道如何获取一个月的数据?使用此查询 -
SELECT SLIDER_VALUE FROM TBL_ACTIVITY_TRACKS WHERE STRFTIME('%m', TRACK_DATE_TIME, 'localtime') = STRFTIME('%m', 'now', 'localtime');
Here TRACK_DATE_TIME is in yyyy-mm-dd date format.
但我希望如果某个特定日期没有数据,那么我想要零或特定的标识符。
我也知道我可以通过创建TBL_DATES来做到这一点。有所有日期,然后左边加入我的桌子,但我不想创建一个新表。
我可以这样做吗?
答案 0 :(得分:2)
您必须从某处获取各个日期值。 如果您不想创建临时表,可以直接在语句中将值嵌入子查询中:
SELECT IFNULL(Slider_Value, 'none')
FROM (SELECT '2013-10-01' AS Date
UNION ALL
SELECT '2013-10-02'
UNION ALL
SELECT '2013-10-03'
UNION ALL
...
SELECT '2013-10-31'
) AS ThisMonth
LEFT JOIN Tbl_Activity_Tracks ON ThisMonth.Date = date(Track_Date_Time)
如果您不想枚举生成SQL语句的代码中的日期,您也可以在SQL本身中执行此操作,并且有足够的扭曲:
SELECT IFNULL(Slider_Value, 'none')
FROM (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')
) AS ThisMonth
LEFT JOIN Tbl_Activity_Tracks ON ThisMonth.Date = date(Track_Date_Time)
(最后三个WHERE条款省略了不在当前月份的天数,少于31天的月份。)
答案 1 :(得分:0)
您只需要在ArrayList中传递数据库查询返回值&然后你获取ArrayList的 size() 。如果大于零,您可以对其进行操作,否则如果没有数据,您可以传递零或执行相应的操作