Guest User

Untitled

a guest
Oct 24th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. set nocount on
  2. IF OBJECT_ID('dbo.Customer') IS NOT NULL
  3. BEGIN
  4. ALTER TABLE dbo.Customer
  5. SET (SYSTEM_VERSIONING = OFF);
  6. DROP TABLE DBO.Customer
  7. DROP TABLE DBO.CustomerHistory
  8. END
  9. GO
  10.  
  11. CREATE TABLE dbo.Customer (
  12. Id INT NOT NULL PRIMARY KEY CLUSTERED
  13. ,NAME NVARCHAR(100) NOT NULL
  14. ,StartTime DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL
  15. ,EndTime DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL
  16. ,PERIOD FOR SYSTEM_TIME(StartTime, EndTime)
  17. )
  18. WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.CustomerHistory))
  19. GO
  20.  
  21. INSERT INTO dbo.Customer VALUES (1,'Bill_1')
  22. GO
  23. WAITFOR DELAY '00:00:02'
  24. GO
  25. UPDATE dbo.Customer SET Name = 'Bill_2'
  26. GO
  27. WAITFOR DELAY '00:00:02'
  28. GO
  29. UPDATE dbo.Customer SET Name = 'Bill_3'
  30. GO
  31. WAITFOR DELAY '00:00:02'
  32. GO
  33. UPDATE dbo.Customer SET Name = 'Bill_4'
  34. GO
  35.  
  36. CREATE FUNCTION dbo.TemporalDataAsOf (
  37. @StartDate DATETIME
  38. ,@EndDate DATETIME
  39. )
  40. RETURNS @Table_Var TABLE (
  41. NAME VARCHAR(100)
  42. ,StartDate DATETIME
  43. ,EndDate DATETIME
  44. )
  45. AS
  46. BEGIN
  47. DECLARE @DateWork DATETIME = @StartDate
  48.  
  49. WHILE @DateWork <= @EndDate
  50. BEGIN
  51. INSERT INTO @Table_Var (
  52. [Name]
  53. ,[StartDate]
  54. ,[EndDate]
  55. )
  56. SELECT [Name]
  57. ,[StartTime]
  58. ,[EndTime]
  59. FROM [Customer]
  60. FOR SYSTEM_TIME AS OF @DateWork
  61.  
  62. SET @DateWork = DATEADD(Second, 1, @DateWork)
  63. END
  64.  
  65. RETURN
  66. END
  67. GO
  68.  
  69. SELECT * FROM dbo.TemporalDataAsOf('2017-10-24 11:00:00', '2017-10-24
  70. 11:00:20') ORDER BY StartDate
  71.  
  72. | NAME | StartDate | EndDate |
  73. |--------|-------------------------|-------------------------|
  74. | Bill_1 | 2017-10-24 11:00:04.290 | 2017-10-24 11:00:06.320 |
  75. | Bill_1 | 2017-10-24 11:00:04.290 | 2017-10-24 11:00:06.320 |
  76. | Bill_2 | 2017-10-24 11:00:06.320 | 2017-10-24 11:00:08.347 |
  77. | Bill_2 | 2017-10-24 11:00:06.320 | 2017-10-24 11:00:08.347 |
  78. | Bill_3 | 2017-10-24 11:00:08.347 | 2017-10-24 11:00:10.373 |
  79. | Bill_3 | 2017-10-24 11:00:08.347 | 2017-10-24 11:00:10.373 |
  80. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
  81. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
  82. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
  83. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
  84. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
  85. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
  86. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
  87. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
  88. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
  89. | Bill_4 | 2017-10-24 11:00:10.373 | 9999-12-31 23:59:59.997 |
Add Comment
Please, Sign In to add comment