ติดปัญหาเรื่อง Format ของ Datetime ค่ะ ทำยังไงมันก็ค้นหาข้อมูลไม่ได้สักที Asp.net ช่วยหน่อยนะคะ
ดู Format ครับ ว่าเป็นแบบ พศ. หรือ คศ.
Date :
2012-01-11 21:28:38
By :
webmaster
Database เป็นอะไรหรอครับ?
แล้วทำไมไม่ใช้ Format วันที่ของ Database นั้น ๆ เข้าไปช่วย Query ล่ะครับ
Date :
2012-01-11 22:16:13
By :
grostdash
เอ่อ พี่วิน มีวิธีดู Format ไหมคะ? คือว่า ไม่รู้ว่าจะดู Format ของ Windows เรา หรือว่า ดู Format ของ Database น่ะค่ะ หรือ มีวิธีดูยังไงที่ง่ายและดีที่สุด ช่วยสอนหน่อยค่ะ พี่วิน
ตอบคุณ BieR database เป็น Access ค่ะ ดูใน Format ใน Access นี่มันดูตรงไหนหรอคะ เดี๋ยวพรุ่งนี้ไปที่ทำงาน จะไปดูอีกทีค่ะ พอดีตอนนี้กลับบ้านแล้ว
ขอบคุณ ทุกคนมากๆเลยนะคะ ตั้งใจว่าพรุ่งนี้ต้องแก้ให้ได้^^
Date :
2012-01-11 23:36:26
By :
mayapopy
ยังแก้ไม่ได้เลยค่ะ
ก็เลยเอาข้อมูลเพิ่มเติมมาให้ค่ะ อันนี้เป็นรูป propertie ที่เราตั้งไว้ของ Textbox ทั้ง 2 ตัว(เป็น Calendar ของ Ajax toolkit)
อันนี้เป็น database access ที่ตั้งค่าไว้ค่ะ
อันนี้เป็นข้อมูล ที่บันทึกไว้ ในaccess ค่ะ
ส่วนนี้เป็น Region and Language ที่เราตั้งค่าของรูปแบบวันที่ไว้ค่ะ
ช่วยหน่อยนะคะ ไม่รู้จะแก้ตรงไหนแล้วน่ะค่ะ ไม่เข้าใจในปัญหานี้เลย
ขอบคุณทุกคนล่วงหน้านะคะ ที่เข้ามาช่วย^^
Date :
2012-01-12 09:15:39
By :
mayapopy
พอจะทราบสาเหตุแล้วค่ะ จากการลองทดสอบดู เราแค่ค้นหาวันที่ มากกว่า 01/01/2012 ปรากฏว่าข้อมูลมันออกมาทั้งหมด ซึ่งก็แปลว่าถูกต้องค่ะ
แต่พอค้นหาวันที่ มากกว่า 02/01/2012 มันกลับหาข้อมูล ไม่เจอเลยค่ะ พอค้นหาวันที่ตั้งแต่ 03/01/2012 ....04,05,06 ไปเรื่อยๆ มันก็ค้นหาข้อมูลไม่เจอเลย เช่นกันค่ะ
เราก็เลยคิดว่า เป็นเพราะมันอ่านข้อมูลสลับกันแน่เลยค่ะ คือ เป็น MM/dd/yyyy มันก็เลยไม่ได้ค่ะ เพราะพอเลือกเป็นวันที่ 2 เป็นต้นไป มันจะอ่านเป็น วันที่ 1 เดือน 2
เพราะฉะนั้นข้อมูลของเดือน 2 ยังไม่มีเลย มันก็เลยหาไม่เจอ
คำถามก็คือ ใน Debug มันก็ค้นหาถูกต้องแล้ว อย่างนี้ก็แปลว่า เป็นที่ Access ใช่ไหมคะ (เดาเอา)
แล้วจะแก้ข้อมูลใน Access ให้เป็นรูปแบบ dd/MM/yyyy ยังไงหรอคะ เพราะจากรูปที่อัพให้ดู มันก็แก้แล้ว
งงมากเลยค่ะ
Date :
2012-01-12 09:42:58
By :
mayapopy
ไปทดสอบมาแล้ว ใช้จริงๆด้วยค่ะ พอเราค้นหาข้อมูลเป็น วันที่ 01/10/2012 มันก็เจอข้อมูล ของวันที่ 10/01/2012 เลยค่ะ งงไหมคะ?
ตามรูปนี้เลยค่ะ
ที่นี้ อยากรู้ว่าต้องไปแก้ตรงไหนหรอคะ(คิดว่าน่าจะเป็นที่ database ของ access ค่ะ)
Date :
2012-01-12 09:51:32
By :
mayapopy
ง่า....สงสัยจะสันนิฐานผิดหรือเปล่าไม่รู้ค่ะ
คือว่า พอลองเปลี่ยน ให้ DateStart รับค่า Textbox แบบ Datetime มันอ่านค่่าเป็น MM/dd/yyyy ค่ะ
แต่ก็ไม่เข้าใจ เพราะเวลามันรับเข้าไปใน sql มันก็เป็น รูปแบบ dd/MM/yyyy นะคะ แต่มัน คิวรี่ ข้อมูลไม่ออกอ่ะค่ะ
แบบนี้
ว่างเปล่าเลยค่ะ
แล้วก็เหมือนเดิม พอเปลี่ยนเป็น วันที่ 1 เดือน 10 มัน คิวรี่ข้อมูลออกมาได้ค่ะ
แบบนี้
ได้ข้อมูลแล้ว
ไม่ทราบว่ามีวิธีสลับ วันที่ กับ เดือน ไหมคะ ถ้ามี น่าจะทำได้แล้วค่ะ
Date :
2012-01-12 10:05:20
By :
mayapopy
ขอบคุณค่ะ คุณ หางอึ่ง แต่อยากรู้ว่า เราจะรับค่า DateStart ตรงไหนหรอคะ? งง^^
ต้องเขียนว่า
SELECT * FROM dbAudit WHERE DateAudit Between #mm/dd/yyyy# =" & DateStart & " And #mm/dd/yyyy# =" & DateEnd & "
หรือเปล่า
เดี๋ยวไปลองดูก่อนนะคะ
ขอบคุณมากค่ะ
Date :
2012-01-12 10:10:58
By :
mayapopy
ไม่ได้อ่าT_T
Date :
2012-01-12 10:45:56
By :
mayapopy
อ๋อ ขอโทษค่ะ
ทดลองดูแล้วค่ะ
ได้ตามรูป
สรุปว่ามันไม่ได้เป็นที่ Access ใช่ไหมคะ?
Date :
2012-01-12 11:39:37
By :
mayapopy
อ๋อ ไม่ใช่สิ มันเป็นที่ access สิ แล้วต้องแก้ยังไงอ่ะคะ
Date :
2012-01-12 11:50:12
By :
mayapopy
เย้ ได้แล้วค่ะ
ใช้วิธี เอา ฟังชั่น ไป convert เอา เดี๋ยวจะมาบอกวิธีนะคะ อิอิ
ไปทานข้าวก่อน ลืมเลย จะบ่ายโมงแล้วT_T
Date :
2012-01-12 12:44:53
By :
mayapopy
ทำได้ก็กลับมาเขียนไว้ด้วยครับ
Date :
2012-01-12 13:18:38
By :
webmaster
ผมลองใช้คำสั่งนี้รันดูก็ได้ปกตินะครับ สำหรับ access
SELECT *
FROM kt_jl
Where Format(sj,"MM/DD/YYYY")='09/01/2011'
หรือ แบบ Betwen
Where Format(sj,"MM/DD/YYYY") Between '09/01/2011' and '09/02/2011'
Date :
2012-01-12 14:19:36
By :
grostdash
ค่า กลับมาแล้วค่า
แต่ต้องบอกก่อนว่า มันอาจจะมีวิธีที่ดีกว่านี้นะคะ แต่เราไม่รู้ว่าจะทำยังไง
จะลืมจากปัญหาก่อนเลยนะคะ
ปัญหาที่เกิดขึ้นจากที่เราคิดไว้ก็คือว่า มันเป็นที่ Database ของ Access ค่ะ คือมันรับค่า เวลา คิวรี่ข้อมูลวันที่ เป็น MM/dd/yyyy แต่เวลาบันทึกลงในตาราง มันเป็นรูปแบบตามที่เรากำหนดไว้คือ dd/MM/yyyy ความรู้พวกนี้เราได้มาจาก เว็บนี้ค่ะ
http://greatfriends.biz/webboards/msg.asp?id=7750
นั่งอ่านแล้วก็ งงบ้าง แต่ก็พอจะเข้าเรื่องของ database ค่ะ
แล้วที่นี้ก็เลยมานั่งทดลองแล้วก็ Debug ไปเรื่อยๆ แล้วก็พบปัญหาว่า เวลาเรากำหนดให้ ตัวแปร มันรับค่า เป็น "Date" มันจะเป็นรูปแบบวันที่ MM/dd/yyyy เช่น เราคียร์วันที่ 10 มกราคม 2012 มันก็จะเป็น #1/10/2012# สังเกตตัวนี้นะคะ "#" มันจะบ่งบอกว่าข้อมูลนั้นเป็นรูปแบบของ Date ค่ะ
แล้วที่นี้เราลองมาเปลี่ยนค่าเป็น String ปรากฏว่ามันได้เป็น dd/MM/yyyy ก็คือ 10/01/2012 สังเกตว่ามันจะไม่มี "#" แล้ว และจริงๆมันก็เป็นค่าที่ถูกต้องที่เราจะเอาไป คิวรี่ได้ แต่...ทำไมมันถึงคิวรี่แล้วไม่เจอข้อมูล นั่่นเป็นเพราะว่า Database ของเราเอง มันรับค่าเป็น MM/dd/yyyy เพราะงั้นเราก็เลยคิดวิธีที่จะสลับค่า วันที่ กับ เดือน ก่อนที่จะไปคิวรี่น่ะค่ะ
แล้วก็ได้ข้อมูลมากจากเว็บนี้ http://www.narisa.com/forums/index.php?showtopic=24189
จะมีวิธีการ ConvertToDate เราก็เลยทดลองนำมาใช้ดูค่ะ
แบบนี้
Private Shared Function ConvertToDate(ByVal dateVal As String, ByVal dateFormat As String, ByVal cultureName As String) As Date
Dim returnDate As Date
If Date.TryParseExact(dateVal, dateFormat, New System.Globalization.CultureInfo(cultureName, True), Globalization.DateTimeStyles.None, returnDate) Then
Return returnDate
End If
Return Nothing
End Function
แต่...มันก็ยังไม่ได้อยู่ดีค่ะ เพราะว่าค่าที่ Return ออกมา มันเป็น Date ค่ะ ซึ่งมันก็จะเป็น dd/MM/yyyy อยู่ดีค่ะ
เราก็เลยไปเปลี่ยนให้มัน Return ค่า ออกมาเป็น String แบบนี้
Private Shared Function ConvertToDate(ByVal dateVal As String, ByVal dateFormat As String, ByVal cultureName As String) As String <======= เปลี่ยนตรงนี้ค่ะ
Dim returnDate As Date
If Date.TryParseExact(dateVal, dateFormat, New System.Globalization.CultureInfo(cultureName, True), Globalization.DateTimeStyles.None, returnDate) Then
Return returnDate
End If
Return Nothing
End Function
ในที่สุด ค่า วันที่ กับ เดือน มันก็สลับกันค่ะ และก็นำค่าที่ได้นั้นไป คิวรี่ แล้วก็ ทำได้ในที่สุด
แหะๆ
ไม่รู้ว่าเราอธิบายงงหรือเปล่า แต่โดยส่วนตัวแล้วคิดว่าคงมีวิธีที่ดีกว่านี้ แต่ตอนนี้ทำแบบนี้ไปก่อนน่ะค่ะ ถ้าใครไม่เข้าใจตรงไหน ถามได้นะคะ (พอดีตอนนี้ก็ยังมึนๆอยู่เหมือนกัน^^ ก็นั่งมั่วมาตั้งแต่เช้าน่ะค่ะ)
ขอบคุณ พี่ๆทุกคนที่มาช่วยมากๆเลยนะคะ โดยเฉพาะ พี่หางอึ่ง ทำให้เราได้รู้ว่า Database Access เรามันสับสนอยู่นี่เอง^^
ปล.เคยลองเทส ให้มาถึงมันรับค่า String ก็ไม่ได้น่ะค่ะ ต้องให้มันรับค่าเป็น Date ก่อน แล้วค่อยมา Convert เป็น String
Date :
2012-01-12 14:33:09
By :
mayapopy
โอ๊ะ วิธีของคุณ BieR ทำได้จริงๆด้วยค่ะ T_T ทำไมไม่มาบอกตั้งแต่แรก
เราไม่รู้ว่ามีคำสั่ง Format ค่า Date ใน SQL ด้วย T_T
ใช้วิธีของคุณ BieR ดีกว่าค่ะ ง่ายกว่า
เราโง่เองT_T
ขอบคุณมากนะคะ คุณ BieR
จะจำไว้เป็นบทเรียน *-*
Date :
2012-01-12 14:58:52
By :
mayapopy
อ๋อ อย่างนี้ถ้าเราใช้ # เราต้องไปตั้งค่า ให้เครื่องของ User ทุกเครื่อง เป็น ค.ศ. ให้หมดใช่หรือเปล่าคะ คุณ หางอึ่ง
Date :
2012-01-12 16:01:33
By :
mayapopy
Load balance : Server 04