zoukankan      html  css  js  c++  java
  • SQL Server 日期和时间函数

    1、常用日期方法(下面的GetDate() = '2006-11-08 13:37:56.233')

    (1)DATENAME ( datepart ,date )

       返回表示指定日期的指定日期部分的字符串。Datepart详见下面的列表.

    SELECT DateName(day,Getdate()) –返回8

    (2)DATEPART ( datepart , date )

        返回表示指定日期的指定日期部分的整数。

    SELECT DATEPART(year,Getdate()) –返回2006

    (3)DATEADD (datepart , number, date )

        返回给指定日期加上一个时间间隔后的新datetime 值。

    SELECT DATEADD(week,1,GetDate()) --当前日期加一周后的日期

    (4)DATEDIFF ( datepart , startdate , enddate )

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

    SELECT DATEDIFF(month,'2006-10-11','2006-11-01') --返回1

    (5)DAY ( date )

    返回一个整数,表示指定日期的天datepart 部分。

    SELECT day(GetDate()) –返回8

    (6)GETDATE()

    以datetime 值的SQL Server 2005 标准内部格式返回当前系统日期和时间。

    SELECT GetDate()   --返回2006-11-08 13:37:56.233

    (7)MONTH ( date )

    返回表示指定日期的“月”部分的整数。

    SELECT MONTH(GETDATE()) --返回11

    (8)YEAR ( date )

    返回表示指定日期的“年”部分的整数。

    SELECT YEAR(GETDATE()) --返回2006


    2、取特定日期

    (1)获得当前日期是星期几

    SELECT DateName(weekday,Getdate()) --Wednesday

    (2)计算哪一天是本周的星期一

    SELECT DATEADD(week, DATEDIFF(week,'1900-01-01',getdate()), '1900-01-01')  --返回2006-11-06 00:00:00.000

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

    (3)当前季度的第一天

    SELECT DATEADD(quarter, DATEDIFF(quarter,0,getdate()), 0)—返回2006-10-01 00:00:00.000

    (4)如何取得某个月的天数

    SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,'2006-02-03')+1,0)))  —返回28

    (5)一个季度多少天

    declare @m tinyint,@time smalldatetime

    select @m=month(getdate())
    select @m=case when @m between 1 and 3 then 1
                           when @m between 4 and 6 then 4
                           when @m between 7  and 9 then 7
                           else 10 end

    select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
    select datediff(day,@time,dateadd(mm,3,@time)) —返回92


    (6)获得年月日(yyyy-MM-dd)

    SELECT CONVERT(VARCHAR(10),GETDATE(),120) –返回2006-11-08

    3、其它

    (1)--下面的示例将日期指定为数字。数据库引擎将0 解释为1900 年1 月1 日
    SELECT MONTH(0), DAY(0), YEAR(0) –返回1    1   1900

    --下面两句是等效的
    SELECT DATENAME(WEEKDAY,0)
    SELECT DATENAME(WEEKDAY,'1900-01-01')


    (2)SET DATEFIRST { number | @number_var }

    将一周的第一天设置为从1 到7 的一个数字。

    SET DATEFIRST 1 --表示一周的第一天是“星期一"
    SELECT DATENAME(WEEKDAY,GETDATE()) --Wednesday
    SELECT DATEPART(weekday,GETDATE()) --返回3
    --查看当前设置情况
    select @@DATEFIRST


    (3)SET DATEFORMAT { format | @format_var }

    设置用于输入datetime 或smalldatetime 数据的日期部分(月/日/年)的顺序。
    ...有效参数包括mdy、dmy、ymd、ydm、myd 和dym。
    ...该设置仅用在将字符串转换为日期值时的解释中。它不影响日期值的显示。
    ...SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。
    ...SET DATEFORMAT 将覆盖SET LANGUAGE 的隐式日期格式设置。
    下面是例子:
    -- Set date format to year, day, month.
    SET DATEFORMAT ydm;
    GO
    DECLARE @datevar DATETIME;
    SET @datevar = '1998/31/12';
    SELECT @datevar AS DateVar;
    GO
    -- Set date format to year, month, day.
    SET DATEFORMAT ymd;
    GO
    DECLARE @datevar DATETIME;
    SET @datevar = '1998/12/31';
    SELECT @datevar AS DateVar;
    GO

    (4)日期部分的列表

    日期部分

    缩写

    year

    yy, yyyy

    quarter

    qq, q

    month

    mm, m

    dayofyear

    dy, y

    day

    dd, d

    week

    wk, ww

    weekday

    dw

    hour

    hh

    minute

    mi, n

    second

    ss, s

    millisecond

    ms

    数据类型

    范围

    精确度

    datetime

    1753 年 1 月 1 日到 9999 年 12 月 31 日

    3.33 毫秒

    smalldatetime

    1900 年 1 月 1 日到 2079 年 6 月 6 日

    1 分钟

  • 相关阅读:
    4 Apr 18 软件开发目录 logging模块的使用 序列化(Json, Pickle) os模块
    3 Apr 18 内置函数 列表生成式与生成器表达式 模块的使用之import 模块的使用之from…import…
    2 Apr 18 三元表达式 函数递归 匿名函数 内置函数
    30 Mar 18 迭代器 生成器 面向过程的编程
    29 Mar 18 函数 有参、无参装饰器
    28 Mar 18 函数
    27 Mar 18 函数的参数
    26 Mar 18 函数介绍
    23 Mar 18 文件处理
    22 Mar 18 补充数据类型+字符编码+文件处理
  • 原文地址:https://www.cnblogs.com/zfq308/p/564350.html
Copyright © 2011-2022 走看看