调整开始和结束日期sql
Posted
技术标签:
【中文标题】调整开始和结束日期sql【英文标题】:Adjusting start and end dates sql 【发布时间】:2020-09-23 20:56:28 【问题描述】:给定 MS SQL Server 2016 中的数据集
StoreID PurchaseID ShopID LocationID Starttime Endtime
1020 20200102 9856 0010 2020-01-08 09:08:53 2020-01-08 09:11:52
1021 20200102 9856 0020 2020-01-08 09:09:48 2020-01-08 09:11:52
这里的 StoreID 是主键。我正在寻找一个查询,它将第一条记录结束时间的值更改为下一条记录的开始时间中的值。准确地说,我需要查找同一天发生的 PurchaseID 和 shopkeeperID 组合的记录,其中位置 id 两者都不同,然后获取后面记录的开始时间并更新前一行结束时间的值。
注意:这里我只给出了两个样本大小,但在我的数据集中我有超过 2 个以上场景。
我的结果集应该是这样的:
StoreID PurchaseID ShopkID LocationID Starttime Endtime
1020 20200102 9856 0010 2020-01-08 09:08:53 2020-01-08 09:09:48
1021 20200102 9856 0020 2020-01-08 09:09:48 2020-01-08 09:11:52
【问题讨论】:
OP 承认他们在Adjusting start and end dates 中重复了这个问题。 【参考方案1】:一种方法与此接近,尽管子选择的性能不如 SET SQL:
UPDATE
T
SET
T.purchaseendtime =
(
SELECT TOP 1
purchasestarttime
FROM
TABLE_NAME T2
WHERE
T2.PurchaseStartTime > T.PurchaseStartTime
AND T2.PurchaseID = T.PurchaseID
AND T2.ShopkeeperID = T.ShopkeeperID
AND T2.LocationID <> T.LocationID
AND Convert(date, T2.PurchaseStartTime) = Convert(date, T.PurchaseStartTime)
ORDER BY
T2.PurchaseStarttime
)
FROM
TABLE_NAME T
【讨论】:
这个逻辑返回值。 此语句不返回值。它使用子选择来获取值。你试过了吗?以上是关于调整开始和结束日期sql的主要内容,如果未能解决你的问题,请参考以下文章
如何在不改变位置的情况下调整同一行中的两个 React 日期选择器
NSDate.timeIntervalSinceDate 没有节时调整?
SQL 'overlaps' 仅获取开始和结束之间的日期(不包括开始和结束日期)
UITableView 在开始/结束更新调用调整高度后自动滚动到顶部