各位大佬,有一個數據庫我問題想請教一下



現在有一個表,data1和data2是兩個時間段,怎么轉換成具體到每一天的數據?

6 个解决方案

#1


--測試數據
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[date1] DateTime,[date2] DateTime)
Insert #T
select 1,'2017-06-07 15:30:000','2017-06-10 19:30:000'
Go
--測試數據結束
SELECT  ROW_NUMBER() OVER ( ORDER BY GETDATE() ) AS id ,
        DATEADD(DAY, number, date1) AS date1 ,
        DATEADD(MINUTE, DATEDIFF(MINUTE, date1, date2) % ( 24 * 60 ),
                DATEADD(DAY, number, date1)) AS date2
FROM    #T
        JOIN master.dbo.spt_values ON number <= DATEDIFF(DAY, date1, date2)
WHERE   type = 'P'


#2


為什么最后一天date2  時間是 15:30 呢 筆誤?

#3


if not object_id(N'Tempdb..#t') is null drop table #t
Go
Create table #t(id int,date1 datetime,date2 datetime)
Insert #t select 1,'2017-06-07 15:30:00','2017-06-10 19:30:00'
Go
select 
m.number+1 id 
,date1=dateadd(d,m.number,date1)
,date2=dateadd(d,m.number-datediff(d,date1,date2),date2)
from #t t 
join master.dbo.spt_values  m 
on m.number <=datediff(d,date1,date2)
where type='p
/*
id date1 date2
1 2017-06-07 15:30:00.000 2017-06-07 19:30:00.000
2 2017-06-08 15:30:00.000 2017-06-08 19:30:00.000
3 2017-06-09 15:30:00.000 2017-06-09 19:30:00.000
4 2017-06-10 15:30:00.000 2017-06-10 19:30:00.000
*/
'

#4


引用 1 樓 sinat_28984567 的回復:
--測試數據
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([id] int,[date1] DateTime,[date2] DateTime)
Insert #T
select 1,'2017-06-07 15:30:000','2017-06-10 19:30:000'
Go
--測試數據結束
SELECT  ROW_NUMBER() OVER ( ORDER BY GETDATE() ) AS id ,
        DATEADD(DAY, number, date1) AS date1 ,
        DATEADD(MINUTE, DATEDIFF(MINUTE, date1, date2) % ( 24 * 60 ),
                DATEADD(DAY, number, date1)) AS date2
FROM    #T
        JOIN master.dbo.spt_values ON number <= DATEDIFF(DAY, date1, date2)
WHERE   type = 'P'




感謝給我的指導,現在我還有一個問題
如果數據date1和date2是兩個時間段,然后在這個時間段插入正常的上班時間,如圖所示,請問應該如何解決

#5


就是說有正常上班時間段 和 特例
前者是時間段 后者特例做時間點去替換前者當天值

#6


引用 5 樓 ayalicer 的回復:
就是說有正常上班時間段 和 特例
前者是時間段 后者特例做時間點去替換前者當天值

是這樣的。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com