ไม่ว่า "วันที่" '0000-00-00 "เป็น" วันที่ที่ถูกต้อง "นั้นไม่เกี่ยวข้องกับคำถามหรือไม่" เพียงแค่เปลี่ยนฐานข้อมูล "เป็นวิธีแก้ปัญหาที่ใช้งานได้จริง
ข้อเท็จจริง:
- MySQL อนุญาตให้มีวันที่ที่มีค่าเป็นศูนย์
- "ฟีเจอร์" นี้ใช้กับภาษาอื่นอย่างแพร่หลาย
ดังนั้นถ้าฉัน "เพียงแค่เปลี่ยนฐานข้อมูล" โค้ด PHP หลายพันบรรทัดจะแตก
โปรแกรมเมอร์ Java จำเป็นต้องยอมรับ MySQL zero-date และพวกเขาจำเป็นต้องใส่ zero date กลับเข้าไปในฐานข้อมูลเมื่อภาษาอื่น ๆ พึ่งพา "ฟีเจอร์" นี้
โปรแกรมเมอร์ที่เชื่อมต่อกับ MySQL จำเป็นต้องจัดการ null และ 0000-00-00 เช่นเดียวกับวันที่ที่ถูกต้อง การเปลี่ยน 0000-00-00 เป็น null ไม่ใช่ตัวเลือกที่ใช้งานได้เพราะคุณไม่สามารถระบุได้ว่าวันที่คาดว่าจะเป็น 0000-00-00 สำหรับการเขียนกลับไปที่ฐานข้อมูล
สำหรับ 0000-00-00 ฉันขอแนะนำให้ตรวจสอบค่าวันที่เป็นสตริงจากนั้นเปลี่ยนเป็น ("y", 1) หรือ ("yyyy-MM-dd", 0001-01-01) หรือเปลี่ยนเป็นค่าไม่ถูกต้อง MySQL วันที่ (น้อยกว่า 1,000 ปี, iirc) MySQL มี "ฟีเจอร์" อื่น: วันที่ต่ำจะถูกแปลงเป็น 0000-00-00 โดยอัตโนมัติ
ฉันรู้ว่าคำแนะนำของฉันคือกระบอง แต่นั่นก็คือการจัดการวันที่ของ MySQL และสองกระบองไม่ได้ทำให้ถูกต้อง ข้อเท็จจริงของเรื่องที่เป็นโปรแกรมเมอร์จำนวนมากจะมีการจัดการ MySQL ศูนย์วันตลอดไป