monthdiff oracle_timestampdiff

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

展开

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值