根据定义的间隔将开始和结束时间戳分成两部分

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 发生。 @vijaym SWAPE_INSWAPE_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 之后的记录

以上是关于根据定义的间隔将开始和结束时间戳分成两部分的主要内容,如果未能解决你的问题,请参考以下文章

Redshift - 在两个日期之间添加日期(月间隔)

Pandas:如何分析带有开始和结束时间戳的数据?

在php中获取给定月份和年份的开始和结束unix时间戳

如何平均时间间隔?

如何根据时间戳匹配值,当时间戳不存在时,该值是前一个时间戳的值

按时间间隔休眠组