将登记和签出格式分隔为列日期时间数据类型msssql

时间:2016-01-29 04:40:19

标签: php sql-server datetime time-and-attendance

我需要将checkintime列分为AM作为checkin和PM作为checkout;

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试此查询..在like子句中添加搜索条件。

SELECT CASE
         WHEN checktime LIKE '%AM%' THEN LEFT(checktime, Charindex(' ', checktime) - 1)
         ELSE name
       END,
       CASE
         WHEN checktime LIKE '%PM%' THEN RIGHT(checktime, Charindex(' ', Reverse(checktime)) - 1)
       END
FROM   YourTable 

有关详情here

或尝试此解决方案 -

select ParsedData.* 
from MyTable mt
cross apply ( select str = mt.String + ',,' ) f1
cross apply ( select p1 = charindex( ',', str ) ) ap1
cross apply ( select p2 = charindex( ',', str, p1 + 1 ) ) ap2
cross apply ( select Nmame = substring( str, 1, p1-1 )                   
                 , Surname = substring( str, p1+1, p2-p1-1 )
          ) ParsedData

有关详情,请点击here

答案 1 :(得分:0)

我几天前开发了一个考勤系统。大多数考勤机只为您的录入保存日志。如果员工打了5次,那个员工当天就会有5次入职。我做了什么我把所有条目分开了一天的员工,并拿了第一个和最后一个条目来办理登机手续和退房。使用AM / PM查询不是一个好主意,办理登机手续或退房手续都可以是上午或下午。