这是我的 table 。
attendance
empID int(11)
time_stamp datetime
in_out char(3) *determines in / out of employee
am_pm char(2) *determines if morning/afternoon shift
下图显示了我试图得到的输出。我需要将 datetime 数据类型的 time_stamp 的值显示到 vb.net 中的 DataGrid 中。
我知道如何使用日期格式。我只是不知道如何选择数据以那样显示它们。
数据库输入
empID | time_stamp | in_out | am_pm
152 | 2016-01-01 12:00:00 | out | am
152 | 2016-01-01 08:00:00 | in | am
152 | 2016-01-02 12:00:00 | out | am
152 | 2016-01-02 08:00:00 | in | am
152 | 2016-01-03 12:00:00 | out | am
152 | 2016-01-03 08:00:00 | in | am
152 | 2016-01-01 05:00:00 | out | pm
152 | 2016-01-01 01:00:00 | in | pm
152 | 2016-01-02 05:00:00 | out | pm
152 | 2016-01-02 01:00:00 | in | pm
152 | 2016-01-03 05:00:00 | out | pm
152 | 2016-01-03 01:00:00 | in | pm
员工 152 的期望输出
DAY | AM | PM |
1 | 8:00:00 12:00:00 | 1:00:00 5:00:00 |
2 | 8:00:00 12:00:00 | 1:00:00 5:00:00 |
3 | 8:00:00 12:00:00 | 1:00:00 5:00:00 |
最佳答案
您可以使用这样的查询:
SELECT empID, emp_day, MAX(am_in1) as am_in, MAX(am_out1) as am_out, MAX(pm_in1) as pm_in, MAX(pm_out1) as pm_out
FROM (
SELECT empID, DATE_FORMAT(`time_stamp`,'%e') as emp_day,
CASE WHEN am_pm='am' AND in_out='in' THEN DATE_FORMAT(`time_stamp`,'%T') ELSE '' END as am_in1,
CASE WHEN am_pm='am' AND in_out='out' THEN DATE_FORMAT(`time_stamp`,'%T') ELSE '' END as am_out1,
CASE WHEN am_pm='pm' AND in_out='in' THEN DATE_FORMAT(`time_stamp`,'%T') ELSE '' END as pm_in1,
CASE WHEN am_pm='pm' AND in_out='out' THEN DATE_FORMAT(`time_stamp`,'%T') ELSE '' END as pm_out1
FROM attendance
) as o
GROUP BY empID, emp_day
子查询格式化所需的列和主查询组,使每位员工每天一行。
关于mysql - 将日期时间的值显示到 DataGridView 中的不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41670829/