SQL Server,交换时间戳中的日期
我有一个DB表,有两列datetime类型,如下所示SQL Server,交换时间戳中的日期,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个DB表,有两列datetime类型,如下所示 eventTime timeStamp Sequence 1970-01-13 17:14:50.000 2020-03-22 18:28:15.443 5575268 我需要做的是从时间戳中的年份更新eventTime中的年份,但保持eventTime中的时间不变,这样我就可以 eventTime timeStamp Seque
eventTime timeStamp Sequence
1970-01-13 17:14:50.000 2020-03-22 18:28:15.443 5575268
我需要做的是从时间戳中的年份更新eventTime中的年份,但保持eventTime中的时间不变,这样我就可以
eventTime timeStamp Sequence
2020-03-22 17:14:50.000 2020-03-22 18:28:15.443 5575268
最好的方法是什么(我有大约60万行需要这样做…)
谢谢。一个选项是将
时间戳
和事件时间
之间的年差添加到后者:
UPDATE yourTable
SET eventTime = DATEADD(year, DATEDIFF(year, timeStamp, eventTime), eventTime);
SQL Server允许添加
datetime
值。因此:
update t
set eventTime = convert(datetime, convert(date, timestamp)) + convert(datetime, convert(time, eventTime))
where eventTime < convert(date, timestamp);
更新t
set eventTime=convert(datetime,convert(date,timestamp))+convert(datetime,convert(time,eventTime))
其中eventTime
他是一把小提琴
您还可以添加天数:
update t2
set eventtime = dateadd(day, datediff(day, eventtime, timestamp), eventtime)
where eventtime < convert(date, timestamp);
更新t2
set eventtime=dateadd(day,datediff(day,eventtime,timestamp),eventtime)
其中eventtime
您还可以添加WHERE DATEPART(YEAR,timeStamp)DATEPART(YEAR,eventTime)
。