Skip to content

Instantly share code, notes, and snippets.

@radityopw
Last active June 14, 2022 12:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save radityopw/2d3376ed973517832fe744d89cdea646 to your computer and use it in GitHub Desktop.
Save radityopw/2d3376ed973517832fe744d89cdea646 to your computer and use it in GitHub Desktop.
convert ordinary sqlserver table, to temporal table
declare @table nvarchar(255)
declare @sql nvarchar(max)
-- setting table name
set @table = 'dbo.test'
-- adding starttime , endtime columns
set @sql = '
ALTER TABLE '+@table+'
ADD StartTime DATETIME2;'
print(@sql)
set @sql = '
ALTER TABLE '+@table+'
ADD EndTime DATETIME2;'
print(@sql)
-- set default value for starttime and endtime
set @sql = 'UPDATE '+@table+' SET StartTime = ''19000101 00:00:00.0000000'', EndTime = ''99991231 23:59:59.9999999'';'
print(@sql)
set @sql = 'ALTER TABLE '+@table+'
ALTER COLUMN StartTime DATETIME2 NOT NULL;'
print(@sql)
-- starttime and endtime cannot be null
set @sql = 'ALTER TABLE '+@table+'
ALTER COLUMN EndTime DATETIME2 NOT NULL;'
print(@sql)
-- setting period
set @sql = 'ALTER TABLE '+@table+'
ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime);'
print(@sql)
-- finish him!
set @sql = 'ALTER TABLE '+@table+'
SET(SYSTEM_VERSIONING = ON (HISTORY_TABLE = '+@table+'_History, DATA_CONSISTENCY_CHECK = ON));'
print(@sql)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment