ฉันต้องการรับจำนวนวันที่มีอยู่ภายในสองสามวันใน MySQL
ตัวอย่างเช่น:
- วันที่เข้าพักคือ
12-04-2010
- วันที่ออก
15-04-2010
ความแตกต่างของวันจะเป็น 3
ฉันต้องการรับจำนวนวันที่มีอยู่ภายในสองสามวันใน MySQL
ตัวอย่างเช่น:
12-04-2010
15-04-2010
ความแตกต่างของวันจะเป็น 3
คำตอบ:
แล้วฟังก์ชันDATEDIFFล่ะ
การอ้างอิงหน้าคู่มือ:
DATEDIFF () ผลตอบแทน expr1 - expr2 แสดงเป็นค่าในวันจากวันที่หนึ่งไปยังอีก expr1 และ expr2 เป็นวันที่หรือวันที่และเวลาแสดงออก เฉพาะส่วนวันที่ของค่าที่ใช้ในการคำนวณ
ในกรณีของคุณคุณจะใช้:
mysql> select datediff('2010-04-15', '2010-04-12');
+--------------------------------------+
| datediff('2010-04-15', '2010-04-12') |
+--------------------------------------+
| 3 |
+--------------------------------------+
1 row in set (0,00 sec)
แต่โปรดทราบว่าวันที่ควรเขียนเป็นYYYY-MM-DD
และไม่DD-MM-YYYY
เหมือนกับที่คุณโพสต์
datediff()
วิธีการมิฉะนั้นจะส่งคืนค่าลบ
หมายเหตุหากคุณต้องการนับFULL 24 ชม.ระหว่าง 2 วัน Dateiff สามารถส่งคืนค่าที่ไม่ถูกต้องสำหรับคุณ
ตามเอกสารประกอบฯ :
เฉพาะส่วนวันที่ของค่าที่ใช้ในการคำนวณ
ซึ่งส่งผลให้
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
ผลตอบแทน 1 แทนการคาดหวัง 0
โซลูชันกำลังใช้งานselect timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(โปรดสังเกตลำดับของอาร์กิวเมนต์ที่ขัดแย้งกันเมื่อเปรียบเทียบกับวันที่)
ตัวอย่างบางส่วน:
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
ส่งคืน 0select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
ส่งคืน 1select timestampdiff(DAY, '2016-04-13 11:00:00', now());
ผลตอบแทนกี่วัน 24 ชั่วโมงเต็มที่ผ่านมาตั้งแต่ 2016/04/13 11:00:00 จนถึงขณะนี้หวังว่ามันจะช่วยให้ใครบางคนเพราะในตอนแรกมันไม่ชัดเจนว่าทำไมคนลงวันที่คืนค่าซึ่งดูเหมือนจะไม่คาดคิดหรือผิด
datediff()
timestampdiff()
ฉันชอบTIMESTAMPDIFFเพราะคุณสามารถเปลี่ยนหน่วยได้อย่างง่ายดายถ้าต้องการ
รับวันระหว่างวันที่ปัจจุบันถึงวันที่ปลายทาง
SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;
เอาท์พุต
335
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM membership_dates md
เอาท์พุท ::
id entity_id start_date end_date days
1 1236 2018-01-16 00:00:00 2018-08-31 00:00:00 227
2 2876 2015-06-26 00:00:00 2019-06-30 00:00:00 1465
3 3880 1990-06-05 00:00:00 2018-07-04 00:00:00 10256
4 3882 1993-07-05 00:00:00 2018-07-04 00:00:00 9130
หวังว่ามันจะช่วยใครบางคนในอนาคต