mysql - 将日期时间的值显示到 DataGridView 中的不同行

标签 mysql vb.net

这是我的 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  |

hard copy of the daily time record

最佳答案

您可以使用这样的查询:

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

子查询格式化所需的列和主查询组,使每位员工每天一行。

编辑:here is a fiddle

关于mysql - 将日期时间的值显示到 DataGridView 中的不同行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41670829/

相关文章:

mysql - 使用序列循环更新列集?

MySQL 查询同一天多年来的每日平均值

.net - 相同的 If() 和 If 产生不同的结果

vb.net - vb 无法为 SSL/TLS 建立安全通道

vb.net - 使用 VB.net 由 crlf 拆分

mysql - 从没有键(唯一)列的表中删除重复项

mysql - 插入值不为0的记录

php - MSSQL -> MySQL 或 PostgreSQL 数据库复制

c# - 调用 Windows 安全对话框(在 C# 或 VB.NET 中)

vb.net - 关键字 'Shared' 在 VB.NET 中是什么意思?