คำถามติดแท็ก date-format

17
คุณเก็บ“ วันที่คลุมเครือ” ไว้ในฐานข้อมูลได้อย่างไร
นี่เป็นปัญหาที่ฉันพบเจอในสองสามครั้ง ลองนึกภาพคุณมีบันทึกที่คุณต้องการจัดเก็บลงในตารางฐานข้อมูล ตารางนี้มีคอลัมน์ DateTime ที่ชื่อ "date_created" หนึ่งในเร็กคอร์ดนี้ถูกสร้างขึ้นมานานแล้วและคุณไม่แน่ใจจริงๆเกี่ยวกับวันที่แน่นอน แต่คุณรู้ปีและเดือน บันทึกอื่น ๆ ที่คุณรู้เพียงแค่ปี บันทึกอื่น ๆ ที่คุณรู้ว่าวันเดือนและปี คุณไม่สามารถใช้ฟิลด์ DateTime ได้เนื่องจาก "May 1978" ไม่ใช่วันที่ที่ถูกต้อง หากคุณแบ่งออกเป็นหลายคอลัมน์คุณจะไม่สามารถสืบค้นได้ มีคนอื่นวิ่งเข้าไปในนี้ถ้าเป็นเช่นนั้นคุณจัดการกับมันได้อย่างไร? เพื่อชี้แจงระบบที่ฉันกำลังสร้างมันเป็นระบบที่ติดตามคลังข้อมูล เนื้อหาบางส่วนได้ถูกผลิตมานานแล้วและสิ่งที่เรารู้คือ "พฤษภาคม 1978" ฉันสามารถจัดเก็บเป็นวันที่ 1 พฤษภาคม 1978 แต่มีเพียงวิธีที่จะแสดงว่าวันนี้มีความถูกต้องเฉพาะกับเดือน ด้วยวิธีนี้หลายปีต่อมาเมื่อฉันเรียกคืนไฟล์เก็บถาวรนั้นฉันไม่สับสนเมื่อวันที่ไม่ตรงกัน เพื่อจุดประสงค์ของฉันมันเป็นสิ่งสำคัญที่จะต้องแยก "วันที่ไม่รู้จักในเดือนพฤษภาคม 2521" กับ "1 พฤษภาคม 2521" นอกจากนี้ฉันไม่ต้องการเก็บสิ่งที่ไม่รู้จักเป็น 0 เช่น "0 พฤษภาคม 1978" เพราะระบบฐานข้อมูลส่วนใหญ่จะปฏิเสธว่าเป็นค่าวันที่ที่ไม่ถูกต้อง

14
มีเหตุผลทางเทคนิคใด ๆ หรือไม่ในการเขียนโปรแกรมรูปแบบวันที่เริ่มต้นคือ YYYYMMDD และไม่ใช่อย่างอื่น?
มีเหตุผลด้านวิศวกรรมใด ๆ ทำไมมันเป็นเช่นนั้น? ฉันสงสัยในกรณีของ RDBMS ว่ามีบางอย่างเกี่ยวกับการแสดงเนื่องจาก "YEAR" มีความเฉพาะเจาะจงมากกว่า "MONTH" เช่นคุณมีเพียงหนึ่งปี 2000 แต่ทุกปีมี "มกราคม" ซึ่งจะทำให้ง่ายขึ้น / เร็วขึ้นในการกรอง / เรียงลำดับบางสิ่งบางอย่างในปีแรกและนั่นเป็นสาเหตุที่ปีนี้มาก่อน แต่ฉันไม่รู้ว่ามันสมเหตุสมผลจริงหรือ ... มีเหตุผลอะไรบ้าง?


12
การแปลหมายเลขไม่จำเป็นเพียงหรือไม่
ฉันเพิ่งอ่านหน้านี้http://weblogs.asp.net/scottgu/archive/2010/06/10/jquery-globalization-plugin-from-microsoft.aspx หนึ่งในสิ่งที่พวกเขาทำคือการแปลงวันที่ภาษาอาหรับเป็นปฏิทินภาษาอาหรับ ฉันสงสัยว่ามันเป็นความคิดที่ดีที่จะทำเช่นนั้น จริง ๆ แล้วมันจะน่ารำคาญ / สับสนสำหรับผู้ใช้ (แม้ว่าผู้ใช้เป็นภาษาอาหรับ) นอกจากนี้คำถามที่สองของฉันคือเราต้องเปลี่ยน 33,899.99 เป็น 33.899,99 สำหรับวัฒนธรรมบางอย่างเช่นเยอรมันหรือไม่ ฉันหมายความว่ามันไม่เป็นไรที่จะทำเช่นนั้นเพราะห้องสมุดทำเพื่อเราแล้ว แต่สิ่งนี้จะไม่ทำให้ผู้ใช้สับสนมากขึ้น (แม้ว่าเขาจะเป็นคนเยอรมัน ฯลฯ ) ฉันแน่ใจว่าวัฒนธรรมเหล่านี้มาจากไหนถ้าฉันให้เลข 33,899.99 กับคุณไม่มีทางที่คุณจะเข้าใจผิด (นอกเสียจากเว็บไซต์ / แอปพลิเคชันของฉันเป็นเว็บไซต์ / แอปพลิเคชั่นแรกที่คุณเคยใช้มาตลอดชีวิตซึ่งเป็นไปได้ แต่ความน่าจะเป็นนั้นอยู่ในระดับต่ำ) ฉันหมายถึง "สากล" เป็นรูปแบบที่ทุกคนจะเห็นและรู้ว่ามันหมายถึงอะไร ไม่จำเป็นต้องเป็นมาตรฐานที่เขียนด้วยขาวดำและที่คล้ายกัน ตราบใดที่ทุกคนสามารถอ่านและรู้ได้ทันทีโดยไม่สับสนว่าข้อความนี้สื่อถึงอะไร เพื่อให้แน่ใจว่า 1.234,00 นั้นไม่แน่นอน ฉันหมายถึงฉันแน่ใจว่าคุณสามารถหาคนที่ตลอดชีวิตของพวกเขาได้ใช้คอมพิวเตอร์ แต่ยังไม่เคยเจอรูปแบบตัวเลขนี้เลย เนื่องจากเว็บไซต์ / แอพส่วนใหญ่ใช้งาน 1,234.00 โดยไม่มีการเปลี่ยนแปลงเพื่อรองรับการโลคัลไลเซชั่นฉันเชื่อว่ามันเป็นจริง (รูปแบบสากลที่ทุกคนจะเห็นและรู้ว่ามันหมายถึงอะไร) สำหรับวันที่ถ้าเราเขียนวันที่ 01/02/46 ผมมั่นใจว่าไม่มีใครรู้ (ตรงไปตรงมาทันทีไม่มีความคลุมเครือ) ว่าเป็นวันอะไร แต่ไม่มีใครสามารถรับ …

4
เกี่ยวกับวันที่ของฐานข้อมูลประเภท crusade: ถูกต้อง? คุ้มค่า? มีใครรู้สึกบ้างไหม?
ฉันใช้เวลามากในการตอบคำถาม SQL ผ่านทาง SO ฉันเจอคำถามของตระกูลนี้บ่อยครั้ง: SELECT * FROM person WHERE birthdate BETWEEN '01/01/2017' AND '01/03/2017' SELECT * FROM person WHERE birthdate BETWEEN '2017-01-01' AND '2017-03-01' SELECT * FROM person WHERE birthdate BETWEEN 'some string' AND 'other string' เช่นอาศัยการแปลงโดยนัยจากสตริงถึงวันที่ (ไม่ดี) ของพารามิเตอร์ที่กำหนดหรืออาศัยฐานข้อมูลที่แปลงค่า x ล้านแถวของฐานข้อมูลเป็นสตริงและทำการเปรียบเทียบสตริง (แย่กว่า) ฉันแสดงความคิดเห็นเป็นครั้งคราวโดยเฉพาะอย่างยิ่งถ้าเป็นผู้ใช้ตัวแทนสูงที่เขียนคำตอบสมาร์ท แต่คนที่ฉันรู้สึกว่าควรจะมีความเลอะเทอะน้อยลง / พิมพ์ด้วยชนิดข้อมูลของพวกเขาน้อยลง ความคิดเห็นมักจะใช้แบบฟอร์มที่มันอาจจะดีกว่าถ้าพวกเขาแปลงสตริงเป็นวันที่อย่างชัดเจนโดยใช้ to_date (Oracle), …

7
มี "ค่าเวลา" คงที่หรือไม่?
สำหรับบางระบบจะใช้ค่าเวลา 9999-12-31 เป็น "จุดสิ้นสุดเวลา" เป็นเวลาสิ้นสุดของเวลาที่คอมพิวเตอร์สามารถคำนวณได้ แต่ถ้ามันเปลี่ยนไปล่ะ? การกำหนดเวลานี้เป็นตัวแปรบิวอินจะดีกว่าหรือไม่ ใน C และภาษาการเขียนโปรแกรมอื่น ๆ มักจะมีตัวแปรเช่นMAX_INTหรือคล้ายกันเพื่อให้ได้ค่ามากที่สุดที่เป็นจำนวนเต็ม เหตุใดจึงไม่มีฟังก์ชั่นที่คล้ายกันสำหรับMAX_TIMEเช่นตั้งค่าตัวแปรเป็น "หมดเวลา" ซึ่งสำหรับหลาย ๆ ระบบมักจะเป็น 9999-12-31 เพื่อหลีกเลี่ยงปัญหาการเข้ารหัสผิดปี (9999) ระบบเหล่านี้สามารถแนะนำตัวแปรสำหรับ "หมดเวลา" หรือไม่? ** ตัวอย่างจริง ** End of validity date: 31/12/9999.(เอกสารอย่างเป็นทางการมีการระบุไว้เช่นนี้) Blogger ต้องการเขียนหน้าเว็บที่อยู่ด้านบนสุดเสมอหน้าต้อนรับ ดังนั้นจึงมีการกำหนดวันที่ในอนาคตให้มากที่สุด: 3000? ใช่หน้าต้อนรับที่คุณกำลังเผชิญถูกโพสต์เมื่อวันที่ 1 มกราคม 3000 ดังนั้นหน้านี้จะถูกเก็บไว้ที่ด้านบนของบล็อกตลอดไป =) มันโพสต์จริง ๆ แล้วในวันที่ 31 สิงหาคม 2550

11
มีรูปแบบวันที่สากลที่ทุกคนในโลกสามารถเข้าใจได้หรือไม่?
YYYY-MM-DDในแคนาดาทุกคนมีความคุ้นเคยกับรูปแบบวันที่ DD-MM-YYYYในยุโรปหรือแอฟริกาใต้ที่พวกเขาต้องการ มีผู้ใช้จากแอฟริกาใต้ที่สับสนกับYYYY-MM-DDรูปแบบวันที่ มีวิธีจัดการกับสถานการณ์นี้หรือไม่? ฉันคิดว่าจะใช้รูปแบบวิธีการต่อไปนี้สำหรับทุกคน: Feb 02, 2011

1
อะไรคือความแตกต่างระหว่าง“ kk” และ“ HH” +1 ใน ISO-8601
ใน ISO-8601 มีรูปแบบหลายชั่วโมงรูปแบบหนึ่งคือ "kk" สำหรับชั่วโมง 1-24 จุดประสงค์ของสิ่งนี้คืออะไร? มีประเทศที่ชดเชยเวลาของพวกเขาหรือไม่? สำหรับการใช้งานทางทหารหรือไม่? บทความวิกิพีเดียไม่ได้ชี้แจงธรรมชาติที่แท้จริงระหว่าง HH และ kk แหล่งที่มาหลักของความกังวลของฉันคือพฤติกรรมของรูปแบบในที่SimpleDataFormatter แก้ไข: ส่วนโดยตรงจาก SimpleDateFormat ที่ฉันอ้างถึงคือ: ชั่วโมงในวัน (0-23) หมายเลข 0 k ชั่วโมงในวัน (1-24) หมายเลข 24 กำลังใช้ ... HH:mm:ss // 00:00:00 kk:mm:ss // 01:00:00

3
ฉันควรใช้ประเภทวันที่ใน JAX-RS @PathParam หรือไม่
นี่คือสิ่งที่ฉันคิดเกี่ยวกับการทำบนเซิร์ฟเวอร์ JEE Glassfish โดยใช้ Jersey @GET @Path("/{name}/{date}") public String getMessages(@PathParam("name") String name, @PathParam("date") Date date) ฉันชอบความคิดที่จะบอกผู้คนที่ใช้บริการเว็บ RESTful นี้ว่า "วันที่นี่คือทุกอย่างที่ทำงานกับคลาส Date ใน Java" นั่นง่ายมากจากมุมมองที่พวกเขาสามารถดูข้อมูลจำเพาะของวันที่และพวกเขาจะมีรูปแบบการทำงานที่สามารถทดสอบได้แล้ว ปัญหาที่ฉันกังวลคือเมื่อฉันทำสิ่งนี้ JAX-RS ไม่ค่อยดีนักเมื่อ Date () ไม่ชอบสิ่งที่ได้รับในตัวสร้าง เนื่องจาก Date () ส่งข้อผิดพลาดหากไม่สามารถแยกวิเคราะห์สิ่งที่ได้รับ (เช่นถ้าคุณส่งสตริง "วันนี้" แทนที่จะเป็นวันที่จริง) เซิร์ฟเวอร์ JEE จะส่งกลับข้อผิดพลาด 404 นี่เป็นวิธีปฏิบัติที่ดีหรือไม่? มีวิธีที่ดีกว่าในการทำสิ่งนี้ที่ฉันไม่ได้คิด?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.