ปัญหาใช้ isnull ดึงข้อมูลที่มีค่า NULL ในฟิลด์ Datetime แล้วได้ค่าเป็น 1/1/2443 0:00:00 หรือ 1900-01-01 00:00:00.000
ตัวอย่างเช่น การดึงค่าฟิลด์ tsk_start_date(datetime) ดังนี้
SELECT tsk_start_date, ISNULL(tsk_start_date, '') AS tsk_start_date
FROM task
จะได้ผลลัพธ์ดังรูป คือ เมื่อใช้ isnull แล้ว ค่าที่เป็น null จะถูกแปลงเป็นวันที่ 1/1/2443 0:00:00
วิธีแก้ ใช้คำสั่ง SQL ดังนี้
SELECT tsk_start_date, ISNULL(tsk_start_date, '') AS tsk_start_date, CASE WHEN tsk_end_date IS NULL THEN '' ELSE CONVERT(varchar(12), dateadd(year, 543,
tsk_end_date), 103) END AS tsk_end_date
FROM task
จะได้ผลลัพธ์ คือ ค่าที่เป็น NULL จะแสดงเป็นค่าว่าง โดยใช้ CASE นี่เอง
แต่การจะนำไปใช้ใน Dataset นั้น เนื่องจากฟิลด์นี้เป็น Datetime ถ้าค่าที่ได้เป็นค่าว่างเวลาใช้งานจะเป็น Error
วิธีแก้คือ เปลี่ยน DataType ของฟิลด์ใน Dataset เป็น String ซะ