- 浏览: 216087 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (109)
- C# (29)
- ASP.NET (30)
- MSSQL (29)
- javascript (9)
- cmd (3)
- ORACLE (4)
- log4j (1)
- window (5)
- FTP (1)
- Shell (1)
- java (1)
- IIS (7)
- html (11)
- SQL (3)
- Jquery (11)
- IE (3)
- 火狐、谷歌 (2)
- wince (2)
- JSON (5)
- List (1)
- Foreach (1)
- SQLhelper (1)
- Ajax (1)
- Firebird (1)
- mysql (7)
- js (2)
- jQuery.autocomplete (1)
- dataTable (1)
- Http (1)
- get (1)
- datetime (1)
- powshell (1)
- URL Protocol (1)
- Office (1)
- Excel (1)
- ASP.NET,算法,秘钥 (1)
- 浏览器 (1)
- Tomcat (1)
最新评论
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
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
发表评论
-
用一条insert语句来插入多行数据
2016-05-23 10:35 1751oracle、sqlserver不支持inse ... -
关于distinct 和group by的去重逻辑浅析
2016-05-20 11:06 975在数据库操作中,我们常常遇到需要将数据去重计数的工作。例如: ... -
mysql和mssql关键字key的转义
2016-05-20 10:30 789mysql反引号``,它在键盘的~这个键上,SqlServer ... -
SQL几种分页语句性能对比
2014-03-07 10:35 486SET STATISTICS IO ON select * ... -
MSQL2005以上对象名sysproperties 无效的错误
2014-03-03 11:59 1417在MSSQL2008R2里面执行的时候报错:对象名syspro ... -
IN和EXISTS性能上的区别
2014-02-24 16:46 825在外表大内部小的情况下,EXISTS性能比IN快,如果两个表的 ... -
SQL Server 2000 ——系统表和系统视图
2014-02-17 10:26 1211一、一般存储过程 1、 ... -
新增链接服务器
2014-02-17 10:19 784新增链接服务器 if exists (select * fro ... -
在MSSQL2000里面 对象名 'sys.servers' 无效 服务器: 消息 208,级别 16,状态 1,行 1
2014-02-17 10:12 3204在MSSQL2000里面不支持该 sys.servers查看 ... -
SQL SERVER2008数据库中创建和删除链接服务器
2014-02-11 13:43 5023--在SQL SERVER 2008里,可以按以下的方式建立链 ... -
SQL Server获取某月某季某年最后一天的SQL语
2013-11-25 20:26 1409项目中用到的,获取已知年份的第一天和最后一天,觉得网来的不错, ... -
SQL IO、性能
2013-08-30 09:04 1004转载地址:http://blog.csdn.n ... -
SET STATISTICS IO ON和获取表中的所有行
2013-08-14 11:58 703SET STATISTICS IO ON --通过来查看扫描 ... -
SQL CAST和CONVERT区别
2013-08-09 09:06 701一种数据类型的表达式转换为另一种数据类型的表达式。 CAS ... -
图表处理程序配置 [c:\TempImageFiles\] 中的临时目录无效
2013-07-24 11:15 3708图表处理程序配置 [c:\TempImageFiles\] 中 ... -
MS-SQL2005以上的版本解决Syscolumn表中数据不能修改
2013-07-06 11:41 592例如: 在MSSQL2000里面可以获取到相应的数据 获取Tr ... -
asp.net 在webcofig中连接数据库方式
2013-07-02 14:38 7521:window方式验证 <connectionStri ... -
解决用户 'IIS APPPOOL\Classic .NET AppPool' 登录失败 windows 7
2013-07-02 14:31 1140进入iis管理器 本地应用程序池 选中classic. net ... -
分页效果
2013-05-20 19:19 892转载http://jianfulove.iteye.com/b ... -
MS-SQL将已建的表的某个字段修改为默认的值
2013-05-15 16:48 816ALTER TABLE STOCK_INFO ADD CON ...
相关推荐
`DATEDIFF`函数是SQL Server中用于计算两个日期之间差值的内置函数。它允许我们以指定的时间单位(如年、季度、月、日、小时、分钟和秒)来计算两个日期之间的差距。函数的基本语法如下: ```sql DATEDIFF(unit, ...
在MyBatis这个强大的持久层框架中,处理日期时间是常见的操作之一。本文将通过实例分析,探讨在MyBatis中如何有效地操作日期,包括插入、查询和更新等操作。我们将从以下几个方面来深入理解这一主题: 1. **日期...
在SQL Server中,有时我们需要计算两个日期之间相差的工作日数量,即排除周末和法定假日的天数。在提供的示例中,给出了两种不同的T-SQL函数实现方式来完成这个任务,这两种方法都针对MSSQL数据库系统。我们将分别...
针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...
下面详细解释了如何实现一个SQL函数来计算两个日期之间的有效工作日数量,仅排除周末。 ```sql USE [UnderWritting] GO /****** Object: UserDefinedFunction [dbo].[fn_WorkDay] ScriptDate: 02/20/2013 17:32:07 ...
计算除周六日、法定节假日以外两个日期之间的间隔天数
标题中提到的知识点是“获取指定两个日期之间的所有日期”。在编程中,特别是使用Java语言时,这样的需求非常普遍,尤其是在数据库操作、日志记录、报表生成等场景中经常需要计算两个日期间的天数或者日期列表。 ...
INTERVAL常用于计算两个DATETIME值之间的差异,提供了一种衡量时间间隔的方式。 在实际应用中,根据需求选择合适的日期/时间类型至关重要。DATE适用于只需要日期信息的场景,DATETIME适合需要精确到某个时间点的...
DATEDIFF函数用于计算两个日期之间的差值,按照指定的日期部分(datepart)进行计算。例如,如果要计算两个日期之间的年份差异,可以使用如下的语法: ```sql SELECT DATEDIFF(YEAR, '2008-12-31', '2009-01-01'); ...
使用`unsigned`的主要优点有两个: 1. **约束数值范围**:它能确保字段中的数据始终为正数或零,对于那些仅需要处理正数的场景特别有用,比如存储计数器或者索引。 2. **扩展数值范围**:由于不需要存储负数,`...
在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的...
DB2 计算相差天数(时间),打个比方你要计算2013-10-20到2014-03-01的天数
如上述代码所示,创建了一个名为`f_DateADD`的用户定义函数,它接受两个参数:`@Date`(原日期)和`@DateStr`(加减的日期字符串)。 `f_DateADD`函数首先检查输入的日期字符串格式是否符合预定义的规则,即`y-m-d ...
以下将详细介绍如何在不同的编程语言和环境中计算两个日期之间的差异。 1. **Python** 在Python中,我们可以使用`datetime`模块来处理日期和时间。计算日期差的基本方法是创建两个`datetime`对象,然后用减法操作...
- 日期可以直接相减得到两个日期之间的天数差,例如`sysdate - sysdate`将返回0,表示两个日期相隔的天数。 这些函数和操作为数据库中的日期处理提供了极大的便利,使得开发者在处理涉及时间的业务逻辑时更加...
在实际开发中,这两个模拟函数可以帮助PHP开发者在处理日期和时间时实现类似SQL Server的功能,特别是在需要对日期进行加减操作或者计算两个日期之间差值的情况下。然而,需要注意的是,PHP本身提供了丰富的日期和...
timestampdiff() 函数用于计算两个日期和时间之间的差异,例如: ```sql SELECT timestampdiff(SECOND, '2008-08-08 00:00:00', '2008-08-08 01:00:00'); -- 3600 ``` 三、日期和时间转换函数 MySQL 提供了多种...