วิธี Insert ค่า Datetime เข้าไปใน MSSQL

Post date: Aug 23, 2013 3:06:48 AM

ผมเขียนโปรแกรมเพื่อบันทึกเวลาทำงานของครู แล้วบันทึกข้อมูลวันและเวลาลงใน ฐานข้อมูล MSSQL

โดยให้ att_date_in มีชนิด Datetime และต้องการให้บันทึกในฟอร์ม 20/04/2553 8:00:00 เป็นวันเดือนปีแบบไทย คือพุทธศักราช และเวลาเป็นแบบ 24 ชั่วโมง

ครั้งแรกใช้คำสั่ง

INSERT INTO att_personal_in (IDTeacher, att_date_in)

VALUES (’100275′, ’20/04/2010 8:00:00′)

เกิด Error คือ “The conversion of a char data type to datetime data type resulted in out-of-range datetime value”

แสดงว่าผมเขียนคำสั่งผิด รูปแบบข้อมูลวันที่ insert เข้าไปมันผิด วิธีแก้คือการ convert ค่าให้มันซะ โดยแก้คำสั่งเป็น

INSERT INTO att_personal_in (IDTeacher, att_date_in)

VALUES (’100275′, CONVERT(datetime, ’20/04/2010 8:00:45′, 103))

ก็สามารถ Insert ได้ โดยได้ค่าที่เป็น พุทธศักราช ทั้งนี้ต้อง set date และ time ใน Windows 2000 ให้เป็น พุทธศักราช ด้วย หากไม่ได้ผลก็ให้เปลี่ยน 103 เป็น 101 หรือ 102 ก็อาจจะได้นะครับลองทดสอบดู โดยค่าดังกล่าวคือ style ซึ่งแล้วแต่ mssql ที่เรากำหนดตั้งแต่แรก

Syntax ของคำสั่ง convert คือ

CONVERT(data_type(length),data_to_be_converted,style)

The styles that can be used are: