|
|
|
ขอถามเกี่ยวกับการจัดเก็บ dd/mm/yyyy แบบ varchar หน่อยค่ะ |
|
|
|
|
|
|
|
1.การที่เราจัดเก็บวันที่เป็นแบบ dd/mm/yyyy แบบ varchar อยากทราบว่าตอน sql ของเรามันจะเก็บเป็น dd/mm/yyyy เลยหรือเปล่า
Ans. เข้าใจถูกแล้วครับ แต่จะมีปัญหาเวลาเอาใช้งาน เพราะ mysql ใช้รูปแบบ yyyy-mm-dd เช่น 2012-05-13
2.แล้วถ้าเราใช้ datepickker ในการเลือกวันที่แต่ีเราต้องการเก็บรูปแบบวันที่ yyyy/mm/dd แต่อยากให้มันมาเก็บใน textbox แบบ
dd/mm/yyyy แทนต้องทำยังไงค่ะ
Ans. ใน ไฟล์ .js ของ datepicker แก้ตามรูปครับ
|
|
|
|
|
Date :
2012-05-13 20:04:24 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก่อนอื่นขอบคุณนะค่ะที่มาตอบ
อันนี้หมายความว่ามันจะแสดงใน text box เป็น แบบ dd/mm/yy ใช่ไหมค่ะ
แล้ว มันจะเก็บในฐานข้อมูลเป็นแบบ yyyy/mm/dd เลยหรือเปล่่าค่ะ
|
|
|
|
|
Date :
2012-05-13 20:17:30 |
By :
juneneka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หา ไฟล์ .js ของ datepicker ไม่เจอค่ะ
|
|
|
|
|
Date :
2012-05-13 20:28:47 |
By :
juneneka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 3 เขียนโดย : juneneka เมื่อวันที่ 2012-05-13 20:28:47
มันจะแสดงใน text box เป็น แบบ dd/mm/yy ใช่ไหมค่ะ
Ans. ใช่ครับ [อ่านComment No.1 ดีๆด้วยน่ะครับ]
มันจะเก็บในฐานข้อมูลเป็นแบบ yyyy/mm/dd เลยหรือเปล่่าค่ะ
Ans. เก็บครับ แต่อย่างที่บอกไว้ เวลามีการเอาวันที่รูปแบบนี้ไปใช้งานจะยุ่งยากทีหลังครับ [อ่านComment No.1 ดีๆด้วยน่ะครับ]
|
|
|
|
|
Date :
2012-05-13 21:50:21 |
By :
mangkunzo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตกลงว่าเราควรใช้ การจัดเก็บแบบไหนดีที่สุดค่ะ
|
ประวัติการแก้ไข 2012-05-13 22:05:12
|
|
|
|
Date :
2012-05-13 22:04:09 |
By :
juneneka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จำง่ายๆครับ เอาเป็นมาตรฐานของหลายๆ Database + Programming จะมีรูปแบบเป็น 2012-05-13 (yyyy-MM-dd) ครับ
โดย Type นั้นควรเป็น DateTime ครับ ซึ่งแนวคิดนั้นจะแยกออกเป็น 2 ส่วนคือ การจัดเก็บครับ กับ ส่วนของการแสดงผล
1.การจัดเก็บ ไม่ว่าข้อมูล Date ของคุณจะรับค่าเข้ามารูปแบบใดๆ คุณก็จำเป็นที่จะต้องจัดเก็บอยู่ในรูปแบบ yyyy-MM-dd
เสมอครับ เพราะข้อดีของ Type แบบ DateTime นั้นเราจะสามารถคำนวนวันแบบบวก ลบ จัดรูปแบบ และอื่นๆ ได้ครับ
2.ตัว Datetimepicker นั้น น่าจะสามารถเลือกรูปแบบการแสดงผลได้นะครับ (กำหนด Format ได้) ซึ่งเราอาจจะให้การแสดง
ผลกับผู้ใช้เป็น dd/mm/yyyy แต่ข้อมูลเบื้องหลังอาจจะจัดเก็บเป็นแบบ yyyy-MM-dd (โดยนำ event - OnSelect เข้ามาช่วย)
ซึ่ง Textbox แสดงผลแบบ dd/mm/yyyy แต่ Hidden field จัดเก็บเป็น yyyy-MM-dd ครับ
|
|
|
|
|
Date :
2012-05-13 22:23:25 |
By :
smeproject |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่อ เข้าใจแล้วค่าาาาาาา
|
|
|
|
|
Date :
2012-05-13 22:26:23 |
By :
juneneka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือประเด็น ตอนแรกจูน เก็บข้อมูลเป็นแบบ varchar
แล้ว ทำงานปกติทุกอย่าง แต่พอมาถึงขึ้นตอนที่จะเลือกข้อมูลเฉพาะ อย่างเช่น เราต้องหาข้อมูลของวันนี้
ไปถึง ข้อมูลของอีก 4 เดือนข้างหน้า เช่น วันที่ 01-01-2011 ถึง 01-05-2011
ปรากฏว่า คำสั่งที่เราใช้เหมือนกับว่ามันเป็น dd/mm/yyyy แต่ mysql ดันเก็บเป็น mm/dd/yyyy
มันก็เลยหาไม่เจอสักที เลยคิดว่าควรจะมาจัดเก็บใหม่ แต่ก็ยังไม่รู้ว่ามันจะทำได้ไหม
มีแนวทางบ้างไหมค่ะ งงไปหมดแล้ว เหลือ page สุดท้ายที่จะทำแล้วด้วย
|
|
|
|
|
Date :
2012-05-13 22:30:57 |
By :
juneneka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อย่างที่กล่าวไว้ครับเราต้องทำการเก็บข้อมูลเป็นแบบ DateTime ครับผมแล้วมันก็จะเก็บเป็นแบบ yyyy-MM-dd ครับ
พอเวลาคุณ select นั้นในส่วนของ where ให้ใช้ function เพื่อทำการ Casting คอลัมน์ที่จะใช้ในการค้นหาตามนี้ครับ
WHERE DATE_FORMAT('ชื่อคอลัมน์', '%Y-%m-%d') = '2011-01-01' <= อันนี้ใช้ในการค้นหา
ส่วนการ select เราก็สามารถเปลี่ยน format หรือ คำนวณ วันเวลาได้ครับ ตัวอย่างเช่น
SELECT DATE_FORMAT('ชื่อคอลัมน์', '%d-%m-%Y') AS colA, DATE_ADD('ชื่อคอลัมน์', INTERVAL 4 MONTH) AS colB,
('2011-01-01' + INTERVAL 4 MONTH) AS colB <= อันนี้ใช้ในการเปลี่ยน Format และการคำนวณ ครับ
เห็นไหมครับข้อดีของ datatype แบบ DateTime ล่ะครับ
|
|
|
|
|
Date :
2012-05-13 22:47:58 |
By :
smeproject |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SELECT DATE_FORMAT('ชื่อคอลัมน์', '%d-%m-%Y') AS colA,
ตรง AS colA คืออะไรค่ะ ต้องสร้าง mysql เิพิ่มหรือเปล่าค่ะ ทำแล้วไม่เห็นเกิดอะไรขึ้นมาเลย ถ้าต้องสร้างใช้ชนิด type แบบไหนค่ะ
|
|
|
|
|
Date :
2012-05-14 09:06:47 |
By :
juneneka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AS colA
เป็นการเปลี่ยนชื่อ column เพื่อให้เรียกใช้ได้ง่ายขึ้นครับ
( ไม่เกี่ยวกับชื่อใน database เป็นชื่อที่ใช้อ้างอิงตอนแสดงผม หรือเอาไปทำงานต่อไป )
|
|
|
|
|
Date :
2012-05-14 09:15:37 |
By :
rootElement@kmutnb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มันต้องใส่ตรงไหนอ่าค่ะ ยกตัวอย่าง ให้ดูหน่อยค่ะ
|
|
|
|
|
Date :
2012-05-14 09:18:20 |
By :
juneneka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็ตาม comment 10 นั่นหละตัวอย่าง ไม่ต้องเอาไปใส่ตรงไหนทั้งนั้น
Code (PHP)
select count(*) as countRow from ชื่อตาราง;
ลองเอาไป query ใน MySQL ดู แล้วสังเกตว่าชื่อ column เป็นอย่างไร
เป็นชื่อที่ใช้อ้างอิงตอนแสดงผล หรือเอาไปทำงานต่อไป
|
|
|
|
|
Date :
2012-05-14 09:28:39 |
By :
rootElement@kmutnb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตกลงว่าคำสั่ง datetime มันต้องสั่งใน sql myphpadmin เราใช่ไหมค่ะ? ไม่ไ้ด้เอามาใช้ใน .php เหรอค่ะ งงไปหมดเลย
|
|
|
|
|
Date :
2012-05-14 09:36:18 |
By :
juneneka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณเข้าใจอะไรผิดแล้วหละ
ที่ตอบไปคือ AS colA
ไม่เกี่ยวกับ datetime ของคุณแต่อย่างใด
|
|
|
|
|
Date :
2012-05-14 09:40:03 |
By :
rootElement@kmutnb |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เออรบกวนขอเมล์หน่อยได้ไหมค่ะ
|
|
|
|
|
Date :
2012-05-14 09:41:50 |
By :
juneneka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้า type ในดาต้าเบสคุนกำหนดเป้น varchar คุณก็สามารถเก็บเป็น d/m/y ได้เลยครับ แต่ถ้ากำหนดเป็น date ยังไงรูปแบบการเก็บก็จะเป็น y/m/d ครับ
|
|
|
|
|
Date :
2012-05-14 10:34:11 |
By :
keng_ds |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|