我需要在MySQL中获取几个日期之间包含的天数。
例如:
- 入住日期是
12-04-2010
- 退房日期是
15-04-2010
这两个日期之间相差的天数为3。
关于 DATEDIFF 函数怎么样?
引用手册页面:
DATEDIFF() 返回表达式1和表达式2之间以天为单位的差值(expr1 - expr2)。表达式1和表达式2是日期或日期和时间表达式。计算中仅使用值的日期部分。
在你的情况下,你会使用:
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()
和timestampdiff()
之间的参数顺序颠倒真奇怪。 - But those new buttons though.. SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;
output
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
TIMESTAMPDIFF(DAY,STR_TO_DATE(date_format('2018-01-01', '%d-%m-%YYYY'),'%d-%m-%YYYY'), '2020-01-01') TOTAL_DAYS
select timestampdiff(minute, min(date_col), max(date_col))/1440 from table
datediff()
方法的第一个参数必须大于第二个参数,否则它将返回负值。 - Shashanth