【问题标题】: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 是的,它会在同一天

标签: c# sql-server sql-server-2008


【解决方案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 之后的记录
猜你喜欢
  • 1970-01-01
  • 2020-07-18
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
相关资源
最近更新 更多