Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- set nocount on
- IF OBJECT_ID('dbo.Customer') IS NOT NULL
- BEGIN
- ALTER TABLE dbo.Customer
- SET (SYSTEM_VERSIONING = OFF);
- DROP TABLE DBO.Customer
- DROP TABLE DBO.CustomerHistory
- END
- GO
- CREATE TABLE dbo.Customer (
- Id INT NOT NULL PRIMARY KEY CLUSTERED
- ,NAME NVARCHAR(100) NOT NULL
- ,StartTime DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL
- ,EndTime DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL
- ,PERIOD FOR SYSTEM_TIME(StartTime, EndTime)
- )
- WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.CustomerHistory))
- GO
- INSERT INTO dbo.Customer VALUES (1,'Bill_1')
- GO
- WAITFOR DELAY '00:00:02'
- GO
- UPDATE dbo.Customer SET Name = 'Bill_2'
- GO
- WAITFOR DELAY '00:00:02'
- GO
- UPDATE dbo.Customer SET Name = 'Bill_3'
- GO
- WAITFOR DELAY '00:00:02'
- GO
- UPDATE dbo.Customer SET Name = 'Bill_4'
- GO
- CREATE FUNCTION dbo.TemporalDataAsOf (
- @StartDate DATETIME
- ,@EndDate DATETIME
- )
- RETURNS @Table_Var TABLE (
- NAME VARCHAR(100)
- ,StartDate DATETIME
- ,EndDate DATETIME
- )
- AS
- BEGIN
- DECLARE @DateWork DATETIME = @StartDate
- WHILE @DateWork <= @EndDate
- BEGIN
- INSERT INTO @Table_Var (
- [Name]
- ,[StartDate]
- ,[EndDate]
- )
- SELECT [Name]
- ,[StartTime]
- ,[EndTime]
- FROM [Customer]
- FOR SYSTEM_TIME AS OF @DateWork
- SET @DateWork = DATEADD(Second, 1, @DateWork)
- END
- RETURN
- END
- GO
- SELECT * FROM dbo.TemporalDataAsOf('2017-10-24 11:00:00', '2017-10-24
- 11:00:20') ORDER BY StartDate
- | NAME | StartDate | EndDate |
- |--------|-------------------------|-------------------------|
- | Bill_1 | 2017-10-24 11:00:04.290 | 2017-10-24 11:00:06.320 |
- | Bill_1 | 2017-10-24 11:00:04.290 | 2017-10-24 11:00:06.320 |
- | Bill_2 | 2017-10-24 11:00:06.320 | 2017-10-24 11:00:08.347 |
- | Bill_2 | 2017-10-24 11:00:06.320 | 2017-10-24 11:00:08.347 |
- | Bill_3 | 2017-10-24 11:00:08.347 | 2017-10-24 11:00:10.373 |
- | Bill_3 | 2017-10-24 11:00:08.347 | 2017-10-24 11:00:10.373 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
- | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
Add Comment
Please, Sign In to add comment