大家好,又见面了,我是你们的朋友全栈君。
营销树今天精心准备的是《timestampdiff》,下面是详解!
mysql两个时间(我有两个字段是datetime类型)相减返…
在mysql中,这种计算可用TIMESTAMPDIFF函数来解决,但是解决过程中需要将数据多次加工。
1、创建测试表及插入测试数据:create table test
(time1 datetime,
time2 datetime)
insert into test values (‘2015-04-03 17:01:09′,’2015-06-03 22:09:30’)
2、目前要结算time2和time1的时间差,用如下语句:select round(TIMESTAMPDIFF(second,time1,time2)/3600,2) from test
结果如图:
解读:
首先,先用select TIMESTAMPDIFF(second,time1,time2) from test
来计算两个时间之间的秒数差。
然后,得到的结果除以3600,即为这两个时间之间的小时数。
最后因为要求保留2位小数,则通过round函数,四舍五入,取出2位小数即可。
DB2中两时间相减求之前相差多少月?
SELECT
timestampdiff (256, char(timestamp(‘2013-12-30 20:30:30’) – timestamp(‘2001-09-26 15:24:23’))) AS “间隔年”,
timestampdiff (128, char(timestamp(‘2013-12-30 20:30:30’) – timestamp(‘2001-09-26 15:24:23’))) AS “间隔季度”,
timestampdiff (64, char(timestamp(‘2013-12-30 20:30:30’) – timestamp(‘2001-09-26 15:24:23’))) AS “间隔月”,
timestampdiff (32, char(timestamp(‘2013-12-30 20:30:30’) – timestamp(‘2001-09-26 15:24:23’))) AS “间隔周”,
timestampdiff (16, char(timestamp(‘2013-12-30 20:30:30’) – timestamp(‘2001-09-26 15:24:23’))) AS “间隔日”,
timestampdiff (8, char(timestamp(‘2013-12-30 20:30:30’) – timestamp(‘2001-09-26 15:24:23’))) AS “间隔时”,
timestampdiff (4, char(timestamp(‘2013-12-30 20:30:30’) – timestamp(‘2001-09-26 15:24:23’))) AS “间隔分”,
timestampdiff (2, char(timestamp(‘2013-12-30 20:30:30’) – timestamp(‘2001-09-26 15:24:23’))) AS “间隔秒”
FROM SYSIBM.SYSDUMMY1;
间隔年 间隔季度 间隔月 间隔周 间隔日 间隔时 间隔分 间隔秒
———– ———– ———– ———– ———– ———– ———– ———–
12 49 147 637 4474 107381 6442866 386571967
1 条记录已选择。
oracle中有没有类似于db2的timestampdiff
在Oracle里用减号“-”直接就是求两个日期时间变量或者表列的差值,只是要看你timestampdiff的第一个参数是求“月、天、时、分”还是“秒、微秒”,这个要略有变通,天数是最直接的。
请教db2的timestampdiff函数计算天数差不对的问题
1. 不够3天
values TIMESTAMPDIFF(16,CHAR(TIMESTAMP(‘2001-09-29-11.25.42.483219’)-TIMESTAMP(‘2001-09-26-12.07.58.065497’)))
1
———–
2
1 record(s) selected.
2. 够3天
values TIMESTAMPDIFF(16,CHAR(TIMESTAMP(‘2001-09-29-12.07.58.483219’)-TIMESTAMP(‘2001-09-26-12.07.58.065497’)))
1
———–
3
1 record(s) selected.
Mysql TIMESTAMPDIFF函数求时间差的毫秒数问题
selectTIMESTAMPDIFF(frac_seconds,’2014-07-2311:17:00.123′,now());失败!…
select TIMESTAMPDIFF(frac_seconds,’2014-07-23 11:17:00.123′,now());
失败!
用SECOND 然后再除以1000是一样的。低版本不支持FRAC_SECOND
derby 数据库中 TIMESTAMPDIFF函数怎么用
TIMESTAMPDIFF is a JDBC escaped function, and is only accessible using the JDBC escape function syntax. The syntax you need is:
select {fn timestampdiff(SQL_TSI_WEEK, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)} from demo.field;
TIMESTAMPDIFF( interval, timestampExpression1, timestampExpression2 )
三个参数,第二和第三个参数是timestamp类型的时间函数,第一个参数是(timestampExpression2-timestampExpression1)的时间差的表示单位,如SQL_TSI_SECOND是以秒为单位,返回两个查询参数的时间差。
1)interval的类型还有:SQL_TSI_DAY
、SQL_TSI_FRAC_SECOND、SQL_TSI_HOUR、SQL_TSI_MINUTE、SQL_TSI_MONTH、
SQL_TSI_QUARTER、SQL_TSI_SECOND、SQL_TSI_WEEK、SQL_TSI_YEAR
mysql两个日期计算天数怎么算?
mysql>selectdatediff(now(),’1993-09-08′); —————————— |datediff(now(),’1993-09-08′)| —————————— |7842| —————————-…
mysql> select datediff(now(),’1993-09-08′);
——————————
| datediff(now(),’1993-09-08′) |
——————————
| 7842 |
——————————
结果为什么是7842?
展开
mysql两个日期计算天数的计算有如下方式:
1、利用TO_DAYS函数
select to_days(now()) – to_days(‘19930908’)
2、利用DATEDIFF函数
select datediff(now(),’19930908′)
参数1 – 参数2 等于间隔天数
3、利用TIMESTAMPDIFF函数
计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现。
函数 TimeStampDiff() 是MySQL本身提供的可以计算两个时间间隔的函数,语法为:
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其中unit单位有如下几种,分别是:FRAC_SECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR 。该参数具体释义如下:
FRAC_SECOND 表示间隔是毫秒
SECOND 秒
MINUTE 分钟
HOUR 小时
DAY 天
WEEK 星期
MONTH 月
QUARTER 季度
YEAR 年
例如:
#计算两日期之间相差多少周
select timestampdiff(week,’2011-09-30′,’2015-05-04′);
#计算两日期之间相差多少天
select timestampdiff(day,’2011-09-30′,’2015-05-04′);
在java中使用timestampdiff()函数
在java中的JDBC使用timestampdiff()函数(update表set字段1=”wheretimestampdiff(day,now(),日期字段)<=0and日期字段!=”),报以下错误com.mysql.jdbc.MysqlDataTruncation:Datatrunca…
在java中的JDBC使用timestampdiff()函数(update 表set 字段1=” where timestampdiff(day,now(),日期字段)<=0 and 日期字段!=” ),报以下错误com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: ”,字段里没有空的数据,在MySQL-Front中能执行的,在java中就报错,这个是怎么回事?
展开
日期字段里面没有空的话,and 日期字段!=”这句去掉试试?
请问mysql的sql中如何计算两个datetime的差,精确…
请问mysql的sql中如何计算两个datetime的差,精确到小时,谢谢selectTIMESTAMPDIFF(MINUTES,offduty_date,onduty_date)testDatefrombao_dan_info我这样写sql,但是报错,请高人指点…
请问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)
sql语句 时间相加
tableiduserIdnamestarttimeendtime1001张三2015-06-2516:05:592015-06-2516:09:592001张三2015-06-2111:05:592015-06-2113:12:593001张三2015-06-2413:05:592015-06-2415:09:594002李…
table
id userId name starttime endtime
1 001 张三 2015-06-25 16:05:59 2015-06-25 16:09:59
2 001 张三 2015-06-21 11:05:59 2015-06-21 13:12:59
3 001 张三 2015-06-24 13:05:59 2015-06-24 15:09:59
4 002 李四 2015-06-25 16:05:59 2015-06-25 16:09:59
5 002 李四 2015-06-21 11:05:59 2015-06-21 13:12:59
6 002 李四 2015-06-24 13:05:59 2015-06-24 15:09:59
查询出
userId name 总时间
001 张三 xxxx-xx-xx xx:xx:xx
002 张三 xxxx-xx-xx xx:xx:xx
一条数据所用的时间 endtime -starttime
总时间是相同userid的所用时间相加求和
题主自己找到的方式
data 类型的 TIMEDIFF(BRIDGE_TIME,START_TIME)
像这“00:00:12”varchar类型的当作时间处理
SUM(TIME_TO_SEC(BRIDGE_DURATION))
展开
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130493.html原文链接:https://javaforall.cn