ค้นหาบทความ

โพสต์แนะนำ

ย้าย Blog ไปที่ TechDiary

วันศุกร์ที่ 11 พฤษภาคม พ.ศ. 2555

ฟังก์ชั่น VB.NET เพื่อปรับวันที่ให้สามารถลง Database ได้

ใช้ในการปรับวันที่ให้อยู่ในรูปแบบที่สามารถ 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

1 ความคิดเห็น:

  1. ใช้ if pDate.year >2500 ไม่ได้ เพราะ
    pDate.year บางที ไม่เท่ากับ pDate.toString("yyyy") เช่น
    บางที pDate.year = 2012 แต่ pDate.ToString("yyyy") กลับเป็น 2555 ซะงั้น เจอกะตัว งงเลย

    ตอบลบ