| | |
| | | |
| | | @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') |
| | |
| | | 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) |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | 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')) |
| | | """) |