ใช้ในการปรับวันที่ให้อยู่ในรูปแบบที่สามารถ Insert / Update ลงดาต้าเบสได้ โดยไม่ต้องสนใจรูปแบบวันที่ของ client และ server ว่าเป็นแบบไหน หรือตรงกันหรือไม่
หลักคือ: รูปแบบวันที่ที่ insert / update ลงใน field ที่เป็น date หรือ datetime ใน Sql Server หรือ Oracle ได้โดยไม่มีปัญหาคือ 'yyyyMMdd' โดยที่ yyyy เป็นปี ค.ศ. MM คือเดือนสองหลัก เช่น มกราคม คือ 01 และสุดท้ายคือ dd เป็นวันที่สองหลัก เช่น วันที่ 3 ก็คือ 03
Private Function ToSQLDate(ByVal pDate As Date) As String
Dim ret As String = ""
If cint(pDate.ToString("yyyy")) > 2500 Then'ถ้าปี มากกว่า 2500 ถือว่าเป็น พ.ศ. ต้องลบ 543
'เอา ปี-543 แล้ว เอามาต่อด้วย เดือน และ วัน
ret &= CStr(cint(pDate.ToString("yyyy")) - 543) & pDate.ToString("MMdd")
Else
'ถ้าเป็น ค.ศ. อยู่แล้ว ก็เอามาจัดให้อยู่ในรูปแบบ yyMMddd
ret = pDate.ToString("yyyyMMdd")
End If
Return ret
End Function
NOTE:
ทดสอบบน
- SQL Server 2000 และสูงกว่า
- Oracle 11g
ใช้ if pDate.year >2500 ไม่ได้ เพราะ
ตอบลบpDate.year บางที ไม่เท่ากับ pDate.toString("yyyy") เช่น
บางที pDate.year = 2012 แต่ pDate.ToString("yyyy") กลับเป็น 2555 ซะงั้น เจอกะตัว งงเลย