sqlserver日期函数

reference:http://www.cnblogs.com/coconut_zhang/archive/2009/02/02/1382598.html

http://blog.itpub.net/14766526/viewspace-1156100/

select GETDATE() as ‘当前日期‘,
DateName(year,GetDate()) as ‘年‘,
DateName(month,GetDate()) as ‘月‘,
DateName(day,GetDate()) as ‘日‘,
DateName(dw,GetDate()) as ‘星期‘,
DateName(week,GetDate()) as ‘周数‘,
DateName(hour,GetDate()) as ‘时‘,
DateName(minute,GetDate()) as ‘分‘,
DateName(second,GetDate()) as ‘秒‘

1.      当前系统日期、时间

select getdate()   --2015-05-06 08:40:17.870

   今天去掉时分秒

   SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)  --2015-05-06 00:00:00.000   

  declare @ datetime
  set @ = getdate()
  SELECT @,DATEADD(day, DATEDIFF(day,0,@),0)

     今天昨天与明天

    select getdate() as today --2015-05-06 07:36:06.957

    select dateadd(day,-1,getdate()) --2015-05-05 07:36:06.957

    select dateadd(day,1,getdate()) --2015-05-07 07:36:06.957

   取系统日期 并将 日期 分开 
        select 当前日期=convert(varchar(10),dateadd(day,-1,getdate()),120),当前时间=convert(varchar(8),getdate(),114)  --当前日期:2015-05-06,当前时间:08:26:07

   取当前是周数与星期几

  select 当前是第几周=datename(week,getdate()),今天是周几=datename(weekday,getdate())   --当前是第几周:19,今天是周几:星期三

  获取当前为星期几
  DATENAME(weekday, getdate())

    显示本月第一天
    SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) 
    select convert(datetime,convert(varchar(8),getdate(),120)+‘01‘,120)

    上个月的第一天

SELECT DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0)

    显示本月最后一天
      select dateadd(day,-1,convert(datetime,convert(varchar(8),dateadd(month,1,getdate()),120)+‘01‘,120))
    SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))

   上个月的最后一天 
    SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0))

     本月的第一个星期一
        select DATEADD(wk,DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())),0)

   本年的第一天 
        SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0)

  本年的最后一天 
  SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0))

  去年的最后一天 
  SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0))

  本季度的第一天 
  SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0)

  当天的半夜

  SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

  本周的星期一 
  SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0)

  查询本月的记录 
  select * from tableName where DATEPART(mm, theDate) = DATEPART(mm, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())

  查询本周的记录 
  select * from tableName where DATEPART(wk, theDate) = DATEPART(wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())

  查询本季的记录 
  select * from tableName where DATEPART(qq, theDate) = DATEPART(qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE()) 
  获取当月总天数:
  select DATEDIFF(dd,getdate(),DATEADD(mm, 1, getdate()))

  获取某月总天数

  declare @y varchar(8)
  declare @m int
  set @y=‘2004‘
  set @m=2
--月份
  select DATEDIFF(day,@y+‘-‘+cast(@m as varchar)+‘-15‘ ,@y+‘-‘+cast(@m+1
as varchar)+‘-15‘)    --29

  查询某个日期之间的记录数据:
  select * from 表 where 开始时间>‘2005-02-01‘ and 结束时间<=‘2005-06-05‘order by id desc

  查询最近30内的记录数据:
  select * from 表 where datediff(Dd,日期字段,getdate())<=30 order by id desc

  查询最近一周内的点击率大于100的记录数据:
select * from 表 where hit_count>100 and datediff(Dw,日期字段,getdate())<=7 order by id desc

判断是否闰年
SELECT case
day(dateadd(mm,2,dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when
28 then ‘平年‘ else ‘闰年‘ end 
--或者
select case
DATEDIFF(day,datename(year,getdate())+‘-02-01‘,dateadd(mm,1,datename(year,getdate())+‘-02-01‘))
when
28 then ‘平年‘ else ‘闰年‘ end

函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称
参数 interval的设定值如下:
值 缩 写(Sql Server) 说明
Year Yy 年 1753 ~ 9999
Quarter Qq 季 1 ~ 4
Month Mm 月1 ~ 12
Day of year Dy 一年的日数,一年中的第几日 1-366
Day Dd 日,1-31
Weekday Dw 一周的日数,一周中的第几日 1-7
Week Wk 周,一年中的第几周 0 ~ 51
Hour Hh 时0 ~ 23
Minute Mi 分钟0 ~ 59
Second Ss 秒 0 ~ 59
Millisecond Ms 毫秒 0 ~ 999

2. dateadd      在向指定日期加上一段时间的基础上,返回新的 datetime 值

例如:向日期加上2天

select dateadd(day,2,‘2004-10-15‘)      --返回:2004-10-17 00:00:00.000

3. datediff 返回跨两个指定日期的日期和时间边界数。

select datediff(day,‘2004-09-01‘,‘2004-09-18‘)       --返回:17

select datediff(day,‘2004-09-18‘,‘2004-09-01‘)       --返回:-17

select datediff(month,‘1991-6-12‘,‘1992-6-21‘)      --返回:-12

4. datepart 返回代表指定日期的指定日期部分的整数。

SELECT DATEPART(month, ‘2004-10-15‘)      --返回 10  , 年为year,月为month,日为day,小时hour,分为minute,秒为second

  DatePart(w,‘2005-7-25 22:56:32‘)   返回值为 2 即星期一(周日为1,周六为7)
   DatePart(d,‘2005-7-25 22:56:32‘)     返回值为 25即25号
     DatePart(y,‘2005-7-25 22:56:32‘)     返回值为 206即这一年中第206天
    DatePart(yyyy,‘2005-7-25 22:56:32‘)  返回值为 2005即2005年

5. datename 返回代表指定日期的指定日期部分的字符串

SELECT datename(weekday, ‘2004-10-15‘)  或者  SELECT  datename(dw,‘2004-10-15‘)      --返回:星期五

6. day(), month(),year() --可以与datepart对照一下

  select DAY(‘2015-05-06‘)  或 SELECT DATEPART(d, ‘2015-05-06‘)    --返回:6

时间: 2025-01-14 09:16:22

sqlserver日期函数的相关文章

SqlServer 日期函数

1.Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数. select datediff(day,'2004-09-01','2004-09-18')

SQLServer日期函数用法

--1.显示本月第一天 1 SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) 2 3 select convert(datetime,convert(varchar(8),getdate(),120)+'01',120) --2.显示本月最后一天 1 select dateadd(day,-1,convert(datetime,convert(varchar(8),dateadd(month,1,getdate()),120)+'01',120)) 2

Sqlserver日期函数应用

1.获取当前时间 SELECT  GETDATE() AS '当前日期' ,         DATENAME(year, GETDATE()) AS '年' ,         DATENAME(month, GETDATE()) AS '月' ,         DATENAME(day, GETDATE()) AS '日' ,         DATENAME(dw, GETDATE()) AS '星期' ,         DATENAME(week, GETDATE()) AS '周数

SQLServer 日期函数及日期转换数据类型

一.统计语句 1.--统计当前[>当天00点以后的数据] SELECT * FROM 表 WHERE CONVERT(Nvarchar, dateandtime, 111) = CONVERT(Nvarchar, GETDATE(), 111)   ORDER BY dateandtime DESC 2.--统计本周 SELECT * FROM 表 WHERE datediff(week,[dateadd],getdate())=0 3.--统计本月 SELECT * FROM 表 WHERE

sql数据库中日期函数---2017-04-12

一.SQLServer时间日期函数详解 1.  当前系统日期.时间 select getdate() 2. dateadd      在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15')      --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数. select datediff(day,'2004-09-01','2004

CONVERT(varchar, getdate(), 120 ) SQLSERVER 日期转换

这是一个mssql数据库的函数,Convert函数的作用,是进行数据类型的转换. 而您所问的这个convert(char(20),openDate,120)则是对日期字段,进行格式化转换成字符格式的函数. 接下来,对您函数中的三个参数,分别进行说明: 1.char(20),是要转换成的目标数据类型及长度,这里您还可以使用varchar(20),也可以使用varchar(10),如果使用20,则转换后的字符串可以是20的长度,如果是10,则只取前10 位了.后面的省掉. 2.openDate,是一

sql的基础语句-单行函数,dual,数字函数,日期函数,表连接,集合运算,分组报表,单行子查询,多行子查询

3. 单行函数 3.1 转换函数 select ascii('A'),chr(65) from dual; select to_char(1243123),1231451 from dual;靠左边的就是字符串,靠右边的就是数字 select to_char(123512a121) from dual;   --错误的写法,没有引号表示数字,但是数字里面包含了字母,不合法的输入值 select to_number('123141211') from dual; select to_number(

SQL-数学、字符串、时间日期函数和类型转换

--数学函数 --ABS绝对值,select ABS(-99)--ceiling取上限,select CEILING(4.5)--floor去下限select FLOOR(4.5)--power 几次方,select POWER(2,2)--round四舍五入,select round (6.45,1)--sqrt开平方select SQRT(9)--square平方select SQUARE(5) --字符串函数--ASCII 返回字符串最左边的字符ascii码select ASCII('na

JS日期函数

JS的日期函数有以下几个: getFullYear(); //获取当前年 getMonth(); //获取当前月,需要加1,而且只有一位数字,如果小于10需要前面加0 getDate(); //获取当前日,只有一位数字,如果小于10需要前面加0 getTime();//返回从 1970 年 1 月 1 日至今的毫秒数. toUTCString();//将当日的日期(根据 UTC)转换为字符串. getDay();//返回星期数 getHours();//返回小时 getMinutes();//返