易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL下日期函数使用

这两天写一个和统计数据有关的存储过程,里面要利用日期进行一些计算和判断,也自然要利用SQL的一些日期相关的函数。这里略记一下,当是复习一下SQL。
利用SQL脚本内置的几个函数,我们能灵活的对日期进行计算和比较。常用的几个函数:GETDATE(),DATEDIFF(),DATEADD()
GETDATE() 当然顾名思义,得到当前的日期,返回类型是DateTime类型。
DATEDIFF ( datepart , startdate , enddate ) 用于判断在两个日期之间存在的指定时间间隔的数目。
第一个参数是指定时间间隔的类型,例如mm(月),dd(天),yy(年),ms(毫秒),ss(秒),不同的间隔类型,返回的结果也不一样。
DATEADD (datepart , number, date ) 用于日期运算的函数,将传入的日期,加上指定时间间隔数目的日期。
例如,计算得到本年的第一天:
Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
我们来分析下这个SQL语句就可以知道,首先从最里面的getdate()开始,getdate()得到当前日期和时间,外层的datediff,计算当前日期和1900-01-01 00:00:00之间的时间间隔,返回单位是以年来统计的,如果我们分开看DATEDIFF(yy,0,getdate()),0)的结果,返回就是:109。返回的109,传递给最外层的DATEADD函数,将1900-01-01 00:00:00加上109年,得到的结果,自然就是2009-01-01 00:00:00了,也即本年的第一天。
同样,灵活的利用这几个函数的组合,我们可以得到不同的结果:
得到当月的第一天:Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
得到当前季度的第一天:Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)
得到当天的起始时间: Select DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
得到上个月最后一天: Select DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
得到上个月的第一天: Select DATEADD(m,-1,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))
其原理就是得到当月第一天,再减去三毫秒(SQL的时间以3毫秒为一个单位),这样以当前为2月,得到的结果就是:2009-01-31 23:59:59.997
得到去年的最后一天: Select DATEADD(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))
得到本月的最后一天: Select DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
得到本年的最后一天: Select DATEADD(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
得到本月的第一个星期一: Select DATEADD(wk, DATEDIFF(wk,0,DATEADD(dd,6-datepart(day,getdate()),g


相关文档:

在SQL中Select语句的执行顺序

在SQL中Select语句的执行顺序如下:
(1)from子句,组装来自不同数据源的数据
(2)WHERE子句,给予指定条件对记录进行筛选
(3)GROUP BY子句,将数据划分为多个组
(4)使用聚集函数进行计算
(5)使用HAVING子句筛选分组
(6)计算所有表达式
(7)使用ORDER BY对结果进行排序 ......

动态sql语句基本语法

1 :普通SQL语句可以用Exec执行
      例:      Select * from tableName
                Exec('select * from tableName')
        & ......

SQL学习笔记

 2009-11-18 12:51:46
 限定处理记录的单位,rowcount=100表式每次处理100条数据。实际处理的记录数由rowcount和where子句决定。如果符合where的记录数大于rowcount,则有rowcount决定,如果小于rowcount,则由where决定。
create table tb(id int identity(1,1),num int)
insert into tb
values(1)
while @@ ......

关于sql中时间的格式转换


sql server2000中使用convert来取得datetime数据类型样式(全)
日期数据格式的处理,两个示例:
CONVERT(varchar(16), 时间一, 20) 结果:2007-02-01 08:02/*时间一般为getdate()函数或数据表里的字段*/
CONVERT(varchar(10), 时间一, 23) 结果:2007-02-01 /*varchar(10)表示日期输出的格式,如果不够长会发生截取*/ ......

SQL中以日期为条件统计方法

 /*统计每天数据总量三种方法:
        select convert(char(10),happentime ,120) as date ,count(1) from table1
        group by convert(char(10),happentime ,120) order by date desc
       s ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号