根据定义的间隔将开始和结束时间戳分成两部分
Posted
技术标签:
【中文标题】根据定义的间隔将开始和结束时间戳分成两部分【英文标题】:Split Start and End timestamp into two based on defined interval 【发布时间】:2019-06-08 19:34:59 【问题描述】:我为员工安排了时间。我想根据动态间隔条件进行拆分
如果间隔是 15:00
输入
EMP_ID SWIPE_IN SWIPE_OUT
4 2019-01-21 13:10:00.000 2019-01-21 15:45:00.000
期望的输出
EMP_ID SWIPE_IN SWIPE_OUT
4 2019-01-21 13:10:00.000 2019-01-21 15:00:00.000
4 2019-01-21 15:00:00.000 2019-01-21 15:45:00.000
【问题讨论】:
您需要添加更多详细信息。目前尚不清楚您的病情。您在这里以 30 分钟的间隔分开,而不是 15 分钟。 15:00 是间隔时间。 . .此输入时间戳应分为 14:30 到 15:00 和 15:00 到 15:30 @scsimon 我认为 OP 意味着拆分必须在 15:00 发生。 @vijaymSWAPE_IN
和 SWAPE_OUT
总是在同一个日期吗?
@Zhorov 是的,它会在同一天
【参考方案1】:
你可以使用这样的东西,
Declare @Interval Varchar(30) = '15:00'
Insert Into [TableName]
Select EMP_ID, CAST(Convert(Varchar, SWIPE_OUT, 23)+ ' ' + @Interval As DateTime), SWIPE_OUT
From [TableName]
Where SWIPE_OUT > CAST(Convert(Varchar, SWIPE_OUT, 23)+ ' ' + @Interval As DateTime)
Update [TableName]
SET SWIPE_OUT = CAST(Convert(Varchar, SWIPE_OUT, 23)+ ' ' + @Interval As DateTime)
Where SWIPE_IN <> CAST(Convert(Varchar, SWIPE_OUT, 23)+ ' ' + @Interval As DateTime)
AND SWIPE_OUT > CAST(Convert(Varchar, SWIPE_OUT, 23)+ ' ' + @Interval As DateTime)
【讨论】:
感谢帕万。但它只在 15:00 以上给出记录。 . .但我需要 15:00 之前的记录和 15:00 之后的记录以上是关于根据定义的间隔将开始和结束时间戳分成两部分的主要内容,如果未能解决你的问题,请参考以下文章