T-SQL ile tarih içeren bir alanı saat kısmını değiştirmeden güncellemek

T-SQL ile tarih içeren bir alanı saat kısmını değiştirmeden güncellemek istediğimizde aşağıdaki adımları uygulayabilirsiniz.

Öncelikle sorgu ekranında set dateformat komutunu çalıştırarak kullanacağımız tarih biçimini belirtmekte fayda var. Burada gün-ay-yıl şeklinde tarih biçimi kullanacağımızı bildiriyoruz.

set dateformat dmy

Daha sonra update etmek istediğimiz kayıtları Select sorgusu ile ekrana alalım. Sorgunun başında saat ve tarih alanını Convert fonksiyonu ile nasıl ayrı ayrı alabileceğimizi görebilirsiniz.

select convert(varchar,PostTime,108) “Saat”, convert(varchar,PostTime,103) “Tarih”,* from [AdventureWorks2012].[dbo].[DatabaseLog] where DatabaseLogID<10

DatabaseLog tablosundaki PostTime alanında 14 Mart 2012 olan kayıtları saatleri değişmeden 18 Şubat 2011 yapmak istediğimizi varsayarsak aşağıdaki sorgu ile kayıtları güncelleyebiliriz.

update [AdventureWorks2012].[dbo].[DatabaseLog]

set PostTime=convert(datetime,’18.02.2011′) + convert(varchar,PostTime,108) where DatabaseLogID<10

Sorguyu çalıştırdığımızda 9 kaydın güncellendiğini görebiliriz.

Daha sonra yine select sorgusu ile güncellenmiş kayıtlarımıza baktığımızda sonucun istediğimiz gibi saat kısmı bozulmadan sadece tarih kısmının güncellendiğini görebiliriz.

select * from [AdventureWorks2012].[dbo].[DatabaseLog] where DatabaseLogID<10

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir