cloudroam
2025-04-03 97745e7ad15fb3d175f81dfdd2f24269e8fdfefd
app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
@@ -92,10 +92,8 @@
    @Query("""
    WITH RECURSIVE dates(date_value) AS (
        -- 从当前日期往前3周的周一开始
        SELECT date(datetime(:date/1000, 'unixepoch', 'localtime'), 'weekday 0', '-21 days') as date_value
        UNION ALL
        -- 每次加7天,直到后2周
        SELECT date(date_value, '+7 days')
        FROM dates
        WHERE date_value < date(datetime(:date/1000, 'unixepoch', 'localtime'), 'weekday 0', '+14 days')
@@ -103,7 +101,7 @@
    SELECT 
        strftime('%Y-%m-%d', date_value) as date,
        COUNT(c.id) as count,
        date_value as weekStart
        strftime('%Y-%m-%d', date_value) as weekStart
    FROM dates d
    LEFT JOIN code c ON strftime('%Y-%m-%d', c.createTime) BETWEEN 
        strftime('%Y-%m-%d', d.date_value) 
@@ -172,7 +170,7 @@
        SELECT 
            strftime('%Y', year_start) as date,
            COUNT(code.id) as count,
            year_start as week_start
            strftime('%Y-%m-%d', year_start) as weekStart
        FROM years 
        LEFT JOIN code ON strftime('%Y', code.createTime) = strftime('%Y', years.year_start)
        GROUP BY years.year_start
@@ -208,9 +206,9 @@
            WHERE date < date(datetime(:date/1000, 'unixepoch', 'localtime'), 'start of month', '+1 month', '-1 day')
        )
        SELECT 
            strftime('%d', days.date) || '' as date,  -- 确保 date 不为空
            strftime('%d', days.date) || '' as date,
            COUNT(code.id) as count,
            days.date as week_start
            strftime('%Y-%m-%d', days.date) as weekStart
        FROM days 
        LEFT JOIN code ON date(code.createTime) = days.date
        GROUP BY days.date
@@ -229,7 +227,7 @@
        SELECT 
            strftime('%m', month_start) as date,
            COUNT(code.id) as count,
            month_start as weekStart
            strftime('%Y-%m-%d', month_start) as weekStart
        FROM months 
        LEFT JOIN code ON strftime('%Y-%m', code.createTime) = strftime('%Y-%m', months.month_start)
        GROUP BY months.month_start
@@ -250,7 +248,7 @@
    SELECT 
        strftime('%Y-%m-%d', days.date) as date,
        COUNT(code.id) as count,
        days.date as weekStart
        strftime('%Y-%m-%d', days.date) as weekStart
    FROM days 
    LEFT JOIN code ON date(code.createTime) = days.date
    GROUP BY days.date
@@ -263,7 +261,7 @@
    SELECT 
        strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime')) as date,
        COUNT(id) as count,
        datetime(:date/1000, 'unixepoch', 'localtime') as weekStart
        strftime('%Y-%m-%d', datetime(:date/1000, 'unixepoch', 'localtime')) as weekStart
    FROM code 
    WHERE strftime('%Y', createTime) = strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime'))
""")