Wednesday, June 10, 2009

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

หรือ

Conversion failed when converting the varchar value 'hello ' to data type int.

  • นึกว่าใส่ ' ' + ก่อนหน้า datetime จะแปลงเป็น varchar อัตโนมัติซะอีก compile store ผ่าน แต่ตอนใช้มีปัญหาซะงั้น เวงจริงๆ

select Rank() OVER(ORDER BY [id]) as 'Rank'
,'Date [S - E]' = ' ' + [start_date] + ' - ' + [end_date]

  • สุดท้ายก็ต้องเรียก convert อยู่ดีถึงใช้ได้ - -'

select Rank() OVER(ORDER BY [id]) as 'Rank'
,'Date [S - E]' = convert(varchar, [start_date]) + ' - ' + convert(varchar, [end_date])

  • สรุป การจะต่อ datatype อื่นๆ เ่่ช่น int หรือ datetime ให้เป็น varchar ต้องใช้ convert([type], [data]) ตัวอย่าง convert(varchar, [start_date])
  • หรือว่าแสดง error ประมาณว่า convert type มีปัญหา ให้ทำการใช้ convert ช่วยเหมือนกัน
  • ด้านล่างนี้อีกตัวอย่าง user define function ใน db convert(varchar,month(@date)) ถ้าไม่ใช้ convert ช่วยจะ compile function ผ่าน แต่ใช้งานจะ error ซะงั้น
ALTER FUNCTION getNewDate
(
@date datetime
)
RETURNS varchar(50)
AS
BEGIN

declare @value varchar(50)

set @value = convert(varchar,month(@date)) + '/' + convert(varchar,day(@date)) + '/' + convert(varchar,year(@date))

return @value

END
GO


เราสามารถใช้แปลงค่าเป็น สตริงแบบนี้ก็ได้ cast(@param as varchar)

No comments:

Post a Comment

Popular Posts