`
cfeers
  • 浏览: 141461 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

sql日期时间相减语句

SQL 
阅读更多

 

sql日期时间相减语句
本款教程利用了datediff函数,来对数据库教程的日期进行相减查询哦,下面便写了n种关于mssql 日期相减的方法。

 

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')


实例二

use pubs
select distinct datediff(day, '2009-3-12', '2009-3-15') as difday
from titles
结果:3


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%60)
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语句中如何做到间隔行相减

    在SQL语句中实现间隔行相减是一种较为高级的数据处理技巧,主要应用于需要对数据集中的数值进行基于位置的计算场景。例如,在财务分析、时间序列数据处理或统计学研究中,这种操作可以帮助我们理解数据随时间或其他...

    mssql sqlserver 使用sql脚本实现相邻两条数据相减.docx

    MSSQL SQL Server 使用 SQL 脚本实现相邻两条数据相减 MSSQL SQL Server 是一种关系型数据库管理系统,广泛应用于各种行业和领域。有时,我们需要对数据库中的数据进行操作,例如计算相邻两条数据的差异。在本文中...

    mybatis中操作日期实例分析

    在Java中,日期时间类型通常有`java.util.Date`、`java.sql.Date`、`java.sql.Time`和`java.sql.Timestamp`。MyBatis在映射XML文件中,需要对这些类型进行适当地配置,例如使用`jdbcType`属性指定数据库对应的日期...

    常用日期相关的SQL语句

    平常整理的一些常用日期相关SQL 日期相减取得相隔天数: SELECT DATEDIFF(D,'2008/09/01','2008/09/03') 一个月第一天的SQL 脚本: SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) ...

    oracle日期时间判断函数

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

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

    根据提供的信息,本文将详细介绍如何使用SQL语句来获取两个时间(`START_DATE`和`END_DATE`)之间的差值,并分别以天、小时、分钟、秒以及毫秒为单位进行计算。 ### Oracle中计算时间差的基础 在Oracle数据库中,...

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

    3. **DATEPART**:SQL Server中的一个内置函数,用于从日期或时间表达式中提取指定的部分。 4. **DATEFIRST**:设置SQL Server识别的一周的第一天。默认值为1(星期日)。 #### SQL工作日计算函数详解 下面详细...

    读取log文件里的sql语句并且赋值

    综上所述,这个程序提供了一个基础框架,用于读取日志文件中的SQL语句,计算它们的执行时间,并将结果保存到Excel文件中。这个小例子虽然简单,但它展示了如何在实际开发中处理文本数据、解析日志、进行时间计算,...

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

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

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

    例如,更新一个`tk`字段,减去8,可以写成这样的SQL语句: ```sql UPDATE `user` SET `tk` = CONVERT( tk + (-8) ,SIGNED ) WHERE `id` = '1330' ``` 这样,即使`tk`字段是`unsigned`类型,也能正确执行减法操作,...

    Oracle的sql语句练习题含复习资料.docx

    ### Oracle SQL 语句练习题知识点解析 #### 练习题1:选择部门30中的所有员工 **SQL语句**: ``` SELECT ename, job, mgr, hiredate, sal, comm, deptno FROM emp WHERE deptno = 30; ``` **解析**: - `SELECT` ...

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

    首先,Oracle支持两种日期时间类型:DATE和TIMESTAMP。它们都可以进行加减操作,但TIMESTAMP提供了更高的精度,能够记录微秒级别的时间差异。对于DATE类型,它的精度到秒,而TIMESTAMP则精确到纳秒。 1. **内置函数...

    SQL计算timestamp的差值的方法

    如果你的SQL方言支持,你可以直接在SQL语句中进行时间差计算,比如在PostgreSQL中,可以使用`-`运算符来计算两个timestamp之间的差值,单位默认是毫秒: ```sql SELECT (timestamp2 - timestamp1) FROM table; `...

    oracle常用的sql语句

    ### Oracle常用的SQL语句知识点详解 #### 一、SQL概述 SQL(Structured Query Language),即结构化查询语言,是用于管理关系型数据库的标准语言。Oracle作为一款流行的关系型数据库管理系统,其支持的SQL语句与...

    C#+SQL2000三层结构的酒店价格处理

    存储过程是一组预编译的SQL语句,可以提高查询效率,减少网络通信,并封装复杂的操作,提高代码的安全性。 存储过程在数据处理中扮演了重要角色,尤其是在业务逻辑层和数据访问层之间起到了桥梁作用。在酒店价格...

    Oracle日期处理

    这条SQL语句将日期 `'2002-08-26'` 转换成星期名称。 ### 2. NLS_DATE_LANGUAGE 设置 `NLS_DATE_LANGUAGE` 是一个重要的会话参数,用于控制日期显示的语言。通过设置这个参数,可以确保日期按照所需的语言格式输出...

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

    例如,假设数据库中表名为`asdfafa_`加上日期形式,如`asdfafa_***`,那么只需要根据生成的日期列表构造SQL查询语句,就可以获取到指定日期范围内的所有记录。 此外,Java的`Calendar`类是一个抽象类,它提供了很多...

    怎样用ACCESS 计算年份差

    例如,如果你有一个名为"日期字段"的时间字段,你可以使用以下SQL语句来计算这个日期字段与当前日期之间的天数差: ```sql SELECT DATEDIFF("d", 日期字段, NOW()) AS 相差天数 FROM 表名; ``` 在这个例子中,"d...

    Oracle数据库Sql语句详解大全73431414.pptx

    Oracle数据库的SQL语句是数据查询和操作的核心工具,它允许我们从数据库中提取所需的信息。在本章中,我们将深入探讨SELECT查询的各种用法,包括基础语法、运算符、空值处理、列别名、去重以及条件查询。 1. **...

Global site tag (gtag.js) - Google Analytics