テーブルに datetime 列があり、今日の日付を取得して時刻部分を保持するように更新したいと考えています。
例:
2011-01-21 01:12... -> 2013-04-23 01:12...
2012-04-20 19:22... -> 2013-04-23 19:22...
これを行う最も簡単な方法は何ですか?
よろしくオスカー
テーブルに datetime 列があり、今日の日付を取得して時刻部分を保持するように更新したいと考えています。
例:
2011-01-21 01:12... -> 2013-04-23 01:12...
2012-04-20 19:22... -> 2013-04-23 19:22...
これを行う最も簡単な方法は何ですか?
よろしくオスカー
編集これはテスト済みのソリューションです
DECLARE @Today DATETIME2(7)
Declare @OldDate DateTime2(7)
SET @Today=GETDATE()
Select @OldDate = date From <SomeDatabase>
SELECT DATEADD(day, -DATEDIFF(day, @Today, @OldDate), @OldDate)
ここに更新があります:
Update <SomeDatabase> Set date = DATEADD(day, -DATEDIFF(day, @Today, @OldDate), @OldDate) where date = @OldDate
これを試してみてください -
DECLARE @date_old DATETIME
SELECT @date_old = '2011-01-21 01:12'
DECLARE @date_new DATETIME
SELECT @date_new = '2013-04-23 05:24'
SELECT CAST(CAST(@date_new AS DATE) AS DATETIME) + CAST(@date_old AS TIME)
テーブルを更新するにはself join
、@Devart によるメソッドを使用して使用し、値を保持しますが、値をtime
更新しますdate
Declare @Sample table ( myDate datetime )
Insert into @Sample
values
('2013-04-21 11:42:51.897'),('2013-04-22 13:42:51.897')
Select * from @Sample
Update t
set myDate =convert(datetime,convert(date,getdate())) + convert (time,s.mydate)
from @Sample t inner join @Sample s
on s.myDate=t.myDate
Select * from @Sample
初期結果
╔═════════════════════════╗
║ myDate ║
╠═════════════════════════╣
║ 2013-04-21 11:42:51.897 ║
║ 2013-04-22 13:42:51.897 ║
╚═════════════════════════╝
最終結果
╔═════════════════════════╗
║ myDate ║
╠═════════════════════════╣
║ 2013-04-23 11:42:51.897 ║
║ 2013-04-23 13:42:51.897 ║
╚═════════════════════════╝