请问mysql的sql中如何计算两个datetime的差,精确到小时,谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问mysql的sql中如何计算两个datetime的差,精确到小时,谢谢相关的知识,希望对你有一定的参考价值。

请问mysql的sql中如何计算两个datetime的差,精确到小时,谢谢
select TIMESTAMPDIFF(MINUTES,offduty_date,onduty_date) testDate from bao_dan_info
我这样写sql,但是报错,请高人指点



TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)

返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。
其结果的单位由interval 参数给出。该参数必须是以下值的其中一个:

FRAC_SECOND 表示间隔是毫秒
SECOND  秒
MINUTE  分钟
HOUR  小时
DAY  天
WEEK  星期
MONTH  月
QUARTER  季度
YEAR  年



SELECT '年'  AS  `日期部分`,  TIMESTAMPDIFF(YEAR, '2012-12-21',  CURRENT_TIMESTAMP()) AS `数值`
UNION ALL
SELECT '季度'  AS  `日期部分`,  TIMESTAMPDIFF(QUARTER, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`
UNION ALL
SELECT '月'  AS  `日期部分`,  TIMESTAMPDIFF(MONTH, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`
UNION ALL
SELECT '日'  AS  `日期部分`,  TIMESTAMPDIFF(DAY, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`
UNION ALL
SELECT '周'  AS  `日期部分`,   TIMESTAMPDIFF(WEEK, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`
UNION ALL
SELECT '时'  AS  `日期部分`,   TIMESTAMPDIFF(HOUR, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`
UNION ALL
SELECT '分'  AS  `日期部分`,   TIMESTAMPDIFF(MINUTE, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`
UNION ALL
SELECT '秒'  AS  `日期部分`,   TIMESTAMPDIFF(SECOND, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`
;


+----------+----------+
| 日期部分 | 数值     |
+----------+----------+
| 年       |        1 |
| 季度     |        4 |
| 月       |       12 |
| 日       |      388 |
| 周       |       55 |
| 时       |     9328 |
| 分       |   559737 |
| 秒       | 33584279 |
+----------+----------+
8 rows in set (0.00 sec)


mysql> select CURRENT_TIMESTAMP();
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2014-01-13 16:58:17 |
+---------------------+
1 row in set (0.00 sec)

参考技术A TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
www.2cto.com
说明:
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的
单位由interval 参数给出。interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同。

SELECT TIMESTAMPDIFF(MONTH,'2009-10-01','2009-09-01');
interval可是:
SECOND 秒 SECONDS
MINUTE 分钟 MINUTES
HOUR 时间 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS追问

不对啊,大哥,这个都是网上的,但是用不了啊?

追答

报什么错误?

本回答被提问者和网友采纳
参考技术B 精确到小时
select TIMESTAMPDIFF(Hour,'2014-01-01 14:00','2014-01-01 16:00');
精确到分钟
select TIMESTAMPDIFF(MINUTE,'2014-01-01 14:00','2014-01-01 16:00')

mysql: 如何计算指定日期到当前日期之间的天数

其中的指定日期取自某数据表中的一个字段

1、首先,我们打开软件,需要创建一个控制台应用程序,在Main方法中用来获取并输出系统当前的日期,输入:DateTime now = DateTime.Now。

2、在visual studio中按F5就可以调试模式运行程序,这个时候,就可以看到当前的日期加时间都输出来了。

3、获取到了今天的日期,这个时候就可以使用DayOfWeek属性了。输入DayOfWeek week = now.DayOfWeek。

4、重新调试运行,就可以看到当前系统日期,以及星期几都输出来了。只不过星期输出来的是英文。

5、接着,在Program类的同级,添加一个新的静态类和静态方法,此处使用静态,仅仅只是为了方便调用。在这个方法中,接收开始、结束日期,然后计算出两个日期之间的工作日天数。

6、在Main方法中,直接通过静态类的静态方法调用,并将结果输出到控制台窗口。

7、重新调试模式运行,就可以看到指定传入的日期之间的工作日天数都计算出来了。

参考技术A datediff
DATEDIFF(expr,expr2)
DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。

mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');

-> 1

mysql> SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');

-> -31
select Datediff(列名,列名) as datenum from 表名本回答被提问者采纳
参考技术B datediff
DATEDIFF(expr,expr2)
DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。
参考技术C select datediff(day,'2008.12.31',getdate()) 参考技术D mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');

-> 1

mysql> SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');

-> -31
select Datediff(列名,列名) as datenum from 表名

以上是关于请问mysql的sql中如何计算两个datetime的差,精确到小时,谢谢的主要内容,如果未能解决你的问题,请参考以下文章

mysql: 如何计算指定日期到当前日期之间的天数

mysql计算时间差函数

mysql 计算两个日期的时间差函数小时分钟格式

mysql插入datetime类型字段

关于数据库MySQL中求两个时间差的问题。

mysql中计算两个时间的时间差,以分钟为单位。