Ne arayalım?

ARAMIZA KATILIN

BİZE ULAŞIN

Adres:

E-posta:

host/bin/bilisimlife.dll

iletisim@bilisimlife.net




 
Rserit
Developer
       
 1026  
 278

MS SQL varchar veri türünden bir datetime veri türüne dönüştürme aralık dışı bir değerle sonuçlandı hatası

Selamlar,
SQL Server'da çalışırken böyle bir hata alıyorsak sorun dönüştürmemekten geliyor.
Hemen örnek gösterelim.


Select * from TldPrice T
INNER JOIN ResellerGroup G on T.ResellerGroupId = G.Id
INNER JOIN Reseller R on R.ResellerGroupId = G.Id
INNER JOIN PriceDefinition P on T.PriceDefinitionId = P.Id
LEFT JOIN Trade A on A.ResellerId = R.Id
Where A.CreatedOn Between '2016-07-30 00:00:00' AND '2016-07-30 23:00:00'


Yukarıdaki sorguda kalın yerlerle işaretlediğim kısımlara bakın. Direk tarihi böyle bir formatta vermişim. Ancak SQL Server'ın bunu Cast etmesi gerekiyor.

Sorgunun yeni hali şöyle:


declare @tarih datetime
select @tarih = cast('2016-07-30 00:00:00' as datetime2)
declare @tarih2 datetime
select @tarih2 = cast('2016-07-31 23:59:59' as datetime2)

Select * from TldPrice T
INNER JOIN ResellerGroup G on T.ResellerGroupId = G.Id
INNER JOIN Reseller R on R.ResellerGroupId = G.Id
INNER JOIN PriceDefinition P on T.PriceDefinitionId = P.Id
LEFT JOIN Trade A on A.ResellerId = R.Id
Where A.CreatedOn Between @tarih AND @tarih2


Cast ettiğim zaman sorgu düzelir.

Iyi günler,
Recep.

Developer.


 
Rserit
Developer
       
 1026  
 278

Cast etmek işe yaramıyorsa TRY_PARSE metodunu deneyin.
Örnek:

Update Urunler Set Tarih = TRY_PARSE('2018-05-19' as datetime2') Where ID = 1

Metoda önce alacağı değeri söylüyoruz, ardından dönüşeceği türü söylüyoruz. Cast'in işe yaramadığı durumlarda genellikle işe yarar.

Developer.