前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >monthdiff oracle_timestampdiff

monthdiff oracle_timestampdiff

作者头像
全栈程序员站长
发布2022-08-11 13:14:47
1.5K0
发布2022-08-11 13:14:47
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

营销树今天精心准备的是《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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档