我每天都有条目作为打卡/打卡时钟.我想显示日期和周日的所有日期,并显示即使当天没有找到数据的日子.
例:
Monday 2015-05-04
- 2015-05-04 10:30:00
- 2015-05-04 15:45:34
Tuesday 2015-05-05
- 2015-05-05 08:43:23
- 2015-05-05 17:18:13
Wednesday 2015-05-06
- 2015-05-06 09:03:12
Thursday 2015-05-07
0 Entries
Friday 2015-05-08
0 Entries
Run Code Online (Sandbox Code Playgroud)
数据库架构如下所示:
id | user_id | punch_time | punch_status
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够将给予MySQL的日期更改为任何时间戳,并显示该周的日期和结果.
感谢:D
新的 任何想法为什么这不适用于没有记录存在的日子?
SELECT * FROM punch_clock, calendar_table WHERE calendar_table.dt = DATE(punch_clock.punch_time) && calendar_table.week_num = $week && calendar_table.y = $year ORDER BY punch_clock.punch_time
Run Code Online (Sandbox Code Playgroud)
较新的查询
SELECT * FROM punch_clock LEFT JOIN calendar_table ON calendar_table.dt = DATE(punch_clock.punch_time) WHERE calendar_table.week_num = 18 && calendar_table.y = 2015;
Run Code Online (Sandbox Code Playgroud)
对于 MySQL,我通常使用日历表来实现此目的(例如,包含 2030 年之前的所有日期),
它允许执行许多其他操作,例如此类查询、管理特殊日期等。
你会想要LEFT JOIN你的桌子在上面,我的意思是这个日历表必须“左侧定位”
根据您的最后一个查询,我会这样做:
SELECT *
FROM calendar AS cal
LEFT JOIN punch_clock AS puc
ON (cal.dt = DATE(puc.punch_time))
WHERE TRUE
AND cal.week_num = 18
AND cal.y = 2015
;
Run Code Online (Sandbox Code Playgroud)
没有尝试,但这就是想法。