• 【转】MS Sql server 日期转换为特定字符串格式(续)


    SQLServer时间日期函数详解,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-09-18')       --返回:17

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

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

          SELECT DATEPART(month, '2004-10-15')      --返回 10

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

           SELECT datename(weekday, '2004-10-15')      --返回:星期五

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

    select 当前日期=convert(varchar(10),getdate(),120)

    ,当前时间=convert(varchar(8),getdate(),114)

    select datename(dw,'2004-10-15')

    select 本年第多少周=datename(week,'2004-10-15')

              ,今天是周几=datename(weekday,'2004-10-15')

    函数                  参数/功能

    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) (Access 和 ASP) 说明

    Year Yy yyyy 年 1753 ~ 9999

    Quarter Qq q    季 1 ~ 4

    Month Mm m    月1 ~ 12

    Day of year Dy y   一年的日数,一年中的第几日 1-366

    Day Dd d    日,1-31

    Weekday Dw w 一周的日数,一周中的第几日 1-7

    Week Wk ww   周,一年中的第几周 0 ~ 51

    Hour Hh h    时0 ~ 23

    Minute Mi n   分钟0 ~ 59

    Second Ss s 秒 0 ~ 59

    Millisecond Ms - 毫秒 0 ~ 999

    access 和 asp 中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于

    Access和asp中,这些函数的用法也类似

     

    举例:

    1.GetDate() 用于sql server :select GetDate()

    2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒

    DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天

    3.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年

     

    具体的语法:

    日期函数用来操作DATETIME 和SMALLDATETIME 类型的数据,执行算术运算。与其它函数一样,可以在

    Select 语句的Select 和Where 子句以及表达式中使用日期函数。其使用方法如下:

    日期函数参数,其中参数个数应不同的函数而不同。

    ·DAY()

    DAY() 函数语法如下:

    DAY (<date_expression>)

    DAY() 函数返回date_expression 中的日期值。

    ·MONTH()

    MONTH() 函数语法如下:

    MONTH (<date_expression>)

    MONTH() 函数返回date_expression 中的月份值。

    与DAY() 函数不同的是,MONTH() 函数的参数为整数时,一律返回整数值1,即SQL Server 认为其

    是1900 年1 月。

    ·YEAR()

    YEAR() 函数语法如下:

    YEAR (<date_expression>)

    YEAR() 函数返回date_expression 中的年份值。

    提醒:在使用日期函数时,其日期值应在1753年到9999年之间,这是SQL Server系统所能识别的日期范

    围,否则会出现错误。

    ·DATEADD()

    DATEADD() 函数语法如下:

    DATEADD (<datepart>, <number>, <date>)

    DATEADD() 函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期。参数“datepart

    ” 在日期函数中经常被使用,它用来指定构成日期类型数据的各组件,如年、季、月、日、星期等。

    其取值如表4-9 所示:

    ·DATEDIFF()

    DATEDIFF() 函数语法如下:

    DATEDIFF() (<datepart>, <date1>, <date2>)

    DATEDIFF() 函数返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其

    结果值是一个带有正负号的整数值。针对不同的datepart, DATEDIFF()函数所允许的最大差距值不

    一样,如:datepart 为second 时,DATEDIFF() 函数所允许的最大差距值为68: 年datepart 为

    millisecond 时,DATEDIFF() 函数所允许的最大差距值为24 天20 小时30 分23 秒647 毫秒。

    ·DATENAME()

    DATENAME() 函数语法如下:

    DATENAME (<datepart>, <date)>

    DATENAME() 函数以字符串的形式返回日期的指定部分此部分。由datepart 来指定。

    ·DATEPART()

    DATEPART() 函数语法如下:

    DATEPART (<datepart>, <date>)

    DATEPART() 函数以整数值的形式返回日期的指定部分。此部分由datepart 来指定。

    DATEPART (dd, date) 等同于DAY (date)

    DATEPART (mm, date) 等同于MONTH (date)

    DATEPART (yy, date) 等同于YEAR (date)

    ·GETDATE()

    GETDATE() 函数语法如下:

    GETDATE()

    GETDATE() 函数以DATETIME 的缺省格式返回系统当前的日期和时间,它常作为其它函数或命令的参

    数使用。

     

     

    在开发数据库应用中,经常会遇到处理时间的问题,如查询指定时间的记录等。下面就这些常见的问题

    ,结合自己的一些经验,和大家探讨一下这类问题。

      首先介绍一下,SQL Server里处理时间的几个主要函数的用法:

    getdate()函数:取得系统当前的日期和时间。返回值为datetime类型的。

    用法:getdate()

    例子:

    select getdate() as dte,dateadd(day,-1,getdate()) as nowdat

    输出结果:

    dte nowdat

    1999-11-21 19:13:10.083 1999-11-20 19:13:10.083

    (1 row(s) affected)

    datepart()函数:以整数的形式返回时间的指定部分。

    用法:datepart(datepart,date)

    参数说明:datepart时要返回的时间的部分,常用取值year、month、day、hour、minute。

    date是所指定的时间。

    例子:

    SELECT DATEPART(month, GETDATE()) AS 'Month Number'

    输出结果:

    Month Number

    11

    (1 row(s) affected)

    dateadd()函数:通过给指定的时间的指定部分加上一个整数值以返回一个新时间值。

    用法:dateadd(datepart,number,date)

    参数说明:datepart(同上)

    date(同上)

    number要增加的值,整型,可正可负,正值返回date之后的时间值,负值返回date

    之前的时间值

    例子:

    select getdate() as today

    select dateadd(day,-1,getdate())

    select dateadd(day,1,getdate())

    输出:

    today

    1999-11-21 19:42:41.410

    (1 row(s) affected)

    yesterday

    1999-11-20 19:42:41.410

    (1 row(s) affected)

    tomorrow

    1999-11-22 19:42:41.410

    (1 row(s) affected)

    datediff()函数:返回两个时间以指定时间部分来计算的差值。返回整数值。如1991-6-12和1991-6-21

    之间以天

    来算相差9天,1998-6-12和1999-6-23按年算相差1年,1999-12-1和1999-3-12按月算相差9个月

    用法:datediff(darepart,date1,date2)

    参数说明:datepart(同上)

    date1、date2(同上date)

    例子:

    select datediff(month,'1991-6-12','1992-6-21') as a

     

    补充: 


    --当月天数
    select day(dateadd(ms,-3,DATEADD(m, DATEDIFF(m,0,getdate())+1,0)))
    ---当月第一天
    select   dateadd(d,-day(getdate())+1,getdate()) 
    ---当月最后一天
    select   dateadd(d,-day(getdate()),dateadd(m,1,getdate()))
    --本年最后一天
    select   dateadd(d,-day(getdate()),dateadd(m,12,getdate()))
    --当月第一个星期一
    SELECT DATEADD(wk, DATEDIFF(wk, '', DATEADD(dd, 6 - DAY(getdate()), getdate())), '')

  • 相关阅读:
    Advanced Configuration Tricks
    Reviewing the Blog Module
    Editing and Deleting Data
    Making Use of Forms and Fieldsets
    Understanding the Router
    SQL Abstraction and Object Hydration
    Preparing for Different Databases
    Java学习理解路线图
    Openstack学习历程_1_视频
    CentOS安装Nginx负载
  • 原文地址:https://www.cnblogs.com/shlcn/p/2694896.html
Copyright © 2020-2023  润新知