ปัญหาใช้ isnull ดึงข้อมูลที่มีค่า NULL ในฟิลด์ Datetime แล้วได้ค่าเป็น 1/1/2443 0:00:00

ปัญหาใช้ 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
isnull datetime1

วิธีแก้ ใช้คำสั่ง 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 นี่เอง
isnull datetime2

แต่การจะนำไปใช้ใน Dataset นั้น เนื่องจากฟิลด์นี้เป็น Datetime ถ้าค่าที่ได้เป็นค่าว่างเวลาใช้งานจะเป็น Error 

วิธีแก้คือ เปลี่ยน DataType ของฟิลด์ใน Dataset เป็น String ซะ
isnull datetime3

Comments

comments

You may also like...

ใส่ความเห็น