`

sql中两个日期相减

阅读更多
sql中两个日期相减

1、相差天数

select trunc(sysdate,'yyyy')-to_date('2009-01-04','yyyy-mm-dd') from dual;

2、相差月数

select  months_between(trunc(sysdate,'mm'),to_date('2009-01','yyyy-mm')) from dual;

3、相差年数

select trunc((months_between(trunc(sysdate,'dd'),to_date('2009-01-01','yyyy-mm-dd')))/12) from dual;

4、select datediff( day, '2008.08.25', '2008.09.01' )

5、select datediff( second, '2009-8-25 12:15:12', '2009-9-1 7:18:20') --返回相差秒数

6、

select datediff( minute, '2009-8-25 12:15:12', '2009-9-1 7:18:20') --返回相差分钟数

7、

select datediff( hour, '2009-8-25 12:15:12', 2009-9-1 7:18:20') --返回相差小时数

问题三:select datediff( day, 2009-8-25 12:15:12', 2009-9-1 7:18:20')
8、
  SELECT  (CAST(datediff(second,StartDate,EndDate) AS FLOAT)/60)AS D
FROM Inventory WHERE RecordId = 2292549  --获取两个日期之差(单位 M)



实例二

use pubs

select distinct datediff(day, '2009-3-12', '2009-3-15') as difday

from titles

结果:3



实例三

select t1.*,t2.RESPONSE_TIME from dbo.CO_ALARM_RECORD t1,dbo.CO_WORK_THRESHOLD t2 where t2.alarm_type_id=t1.alarm_type and datediff( minute, alarm_time, complete_time)>5



declare @dt1 as datetime, @dt2 as datetime;

select @dt1 = '2008-8-4 9:36:41', @dt2 = '2008-8-2 9:33:39';

declare @days as int, @hours as int, @minutes as int, @seconds as int;

set @seconds = datediff( second, @dt2, @dt1);

set @days = @seconds / (24 * 60 * 60)

set @seconds = @seconds - @days * 24 * 60 * 60

set @hours = @seconds / (60 * 60);

set @seconds = @seconds - @hours * 60 * 60

set @minutes = @seconds / 60;

set @seconds = @seconds - @minutes * 60;

select convert(varchar(10), @days ) + '天' + convert(varchar(10), @hours ) + '小时' + convert(varchar(10), @minutes ) + '分' + convert(varchar(10), @seconds ) + '秒';

下面来看个实例

我有一个表,其中有四个字段:开始天数,开始时间,到达天数,到达时间(这四个字段都是varchar类型)

例如:某一条记录:   1  16:00  2   12:20

我的目的就是用 select(到达天数+到达时间)-(开始天数+开始时间) as 花费时间 from table

例如上条记录得到的就是(2*24:00+12:20)-(24:00+16:00)=20:00

这样的sql语句该怎么写???

declare @t table

(

beginday int,

begintime varchar(20),

endday int,

endtime varchar(20)

)

insert @t select 1,'16:00',2,'12:20'

union all select 1,'3:00',3,'19:10'

select

    date=rtrim(date/60)+':'+rtrim(date`)

from

(select     date=datediff(mi,1,dateadd(d,endday-beginday,beginday)-begintime+endtime)from    @t )t

date

-------------------------

20:20

64:10

方法二

declare @t table(开始天数 varchar(10),开始时间 varchar(10),到达天数 varchar(10),到达时间 varchar(10))

insert @t select '1',  '16:00','2','12:20'

--如果开始天数,到达天数大于31

select 到达天数 * 24 + datepart(hh,到达时间) - 开始天数 * 24 - datepart(hh,开始时间)

from @t
分享到:
评论

相关推荐

    sql server日期相减 的实现详解

    `DATEDIFF`函数是SQL Server中用于计算两个日期之间差值的内置函数。它允许我们以指定的时间单位(如年、季度、月、日、小时、分钟和秒)来计算两个日期之间的差距。函数的基本语法如下: ```sql DATEDIFF(unit, ...

    mybatis中操作日期实例分析

    在MyBatis这个强大的持久层框架中,处理日期时间是常见的操作之一。本文将通过实例分析,探讨在MyBatis中如何有效地操作日期,包括插入、查询和更新等操作。我们将从以下几个方面来深入理解这一主题: 1. **日期...

    MSSQL 计算两个日期相差的工作天数的语句

    在SQL Server中,有时我们需要计算两个日期之间相差的工作日数量,即排除周末和法定假日的天数。在提供的示例中,给出了两种不同的T-SQL函数实现方式来完成这个任务,这两种方法都针对MSSQL数据库系统。我们将分别...

    oracle日期时间判断函数

    针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...

    SQL工作日计算,只排除周末

    下面详细解释了如何实现一个SQL函数来计算两个日期之间的有效工作日数量,仅排除周末。 ```sql USE [UnderWritting] GO /****** Object: UserDefinedFunction [dbo].[fn_WorkDay] ScriptDate: 02/20/2013 17:32:07 ...

    计算除周六日、法定节假日以外两个日期之间的间隔天数

    计算除周六日、法定节假日以外两个日期之间的间隔天数

    获取指定两个日期之间的所以日期

    标题中提到的知识点是“获取指定两个日期之间的所有日期”。在编程中,特别是使用Java语言时,这样的需求非常普遍,尤其是在数据库操作、日志记录、报表生成等场景中经常需要计算两个日期间的天数或者日期列表。 ...

    GBase数据库中的日期时间类型详解 1.doc

    INTERVAL常用于计算两个DATETIME值之间的差异,提供了一种衡量时间间隔的方式。 在实际应用中,根据需求选择合适的日期/时间类型至关重要。DATE适用于只需要日期信息的场景,DATETIME适合需要精确到某个时间点的...

    SQL Server日期加减函数DATEDIFF与DATEADD用法分析

    DATEDIFF函数用于计算两个日期之间的差值,按照指定的日期部分(datepart)进行计算。例如,如果要计算两个日期之间的年份差异,可以使用如下的语法: ```sql SELECT DATEDIFF(YEAR, '2008-12-31', '2009-01-01'); ...

    mysql unsigned 用法及相减出现补数溢出解决方法

    使用`unsigned`的主要优点有两个: 1. **约束数值范围**:它能确保字段中的数据始终为正数或零,对于那些仅需要处理正数的场景特别有用,比如存储计数器或者索引。 2. **扩展数值范围**:由于不需要存储负数,`...

    Oracle里面 SQL语句 怎么得到两个时间的时间差

    在Oracle中,可以直接相减两个日期类型的值,结果将会是一个数值,表示两个日期之间的天数差。 ```sql SELECT ROUND(TO_NUMBER(END_DATE - START_DATE)) AS DaysDifference FROM your_table; ``` 这里使用了`TO_...

    获取两个日期类型相差天数

    获取两个日期之间的天数,使用整数计量而不是毫秒数约算,例:2017-11-26 23:59:59 与2017-11-27 00:00:00相差天数是1.

    ORACLE中的日期加减操作实例介绍

    这样,就可以得到两个日期之间的差值,以年、月、日和小时分钟的格式呈现。 在实际工作中,掌握这些日期时间的操作技巧,能够帮助我们更高效地处理时间相关的业务逻辑,比如计算工龄、分析时间序列数据等。Oracle的...

    DB2 计算相差天数(时间)

    DB2 计算相差天数(时间),打个比方你要计算2013-10-20到2014-03-01的天数

    数据库 日期加减处理

    如上述代码所示,创建了一个名为`f_DateADD`的用户定义函数,它接受两个参数:`@Date`(原日期)和`@DateStr`(加减的日期字符串)。 `f_DateADD`函数首先检查输入的日期字符串格式是否符合预定义的规则,即`y-m-d ...

    计算日期差

    以下将详细介绍如何在不同的编程语言和环境中计算两个日期之间的差异。 1. **Python** 在Python中,我们可以使用`datetime`模块来处理日期和时间。计算日期差的基本方法是创建两个`datetime`对象,然后用减法操作...

    oracle_日期_加减方法

    - 日期可以直接相减得到两个日期之间的天数差,例如`sysdate - sysdate`将返回0,表示两个日期相隔的天数。 这些函数和操作为数据库中的日期处理提供了极大的便利,使得开发者在处理涉及时间的业务逻辑时更加...

    模拟SQLSERVER的两个函数:dateadd(),datediff()

    在实际开发中,这两个模拟函数可以帮助PHP开发者在处理日期和时间时实现类似SQL Server的功能,特别是在需要对日期进行加减操作或者计算两个日期之间差值的情况下。然而,需要注意的是,PHP本身提供了丰富的日期和...

    mysql 日期操作 增减天数、时间转换、时间戳.docx

    timestampdiff() 函数用于计算两个日期和时间之间的差异,例如: ```sql SELECT timestampdiff(SECOND, '2008-08-08 00:00:00', '2008-08-08 01:00:00'); -- 3600 ``` 三、日期和时间转换函数 MySQL 提供了多种...

Global site tag (gtag.js) - Google Analytics