zoukankan      html  css  js  c++  java
  • SQL 日期相关操作

    一、获取月份的天数

    -----获取月份的天数
    SELECT 32-DAY(getdate()+32-DAY(getdate()))
    SELECT 32-DAY( CONVERT(datetime,'08/01/2019',101) +32-DAY(CONVERT(datetime,'08/01/2019',101) ))

     二、日期加减

    DATEADD(datepart,number,date)
    datepart:y-年份,m-月份,d-日期
    date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

    例:

    select DATEADD(m,1,getdate()),DATEADD(m,1,CONVERT(datetime,'08/01/2019',101))

    结果:

    注意:能用DATEADD函数的就要用,不要用字符串转int再增加的方式,会出现意想不到的问题。而且出现的情况比较复杂,例如月份加1,当前月份为12月时,手动增加月份会出错,而用函数便不会。

    三、日期比较 DATEDIFF

    SELECT*FROM Log WHERE DATEDIFF(DAY,WriteTime,CONVERT(datetime,'2018-10-17',101))<0

    、SQL Server 时间字符串转换为DateTime格式

    SELECT GETDATE() -------获取当前时间
    SELECT CONVERT(DATETIME,'2018-06-26 09:54:30.027'); --------将时间字符串转换为DATETIME格式,
    SELECT CONVERT(DATETIME,'2018-06-26 09:54:30.027',20); --------同上
    SELECT CONVERT(DATETIME,CONVERT(VARCHAR,DATEPART(yy,GETDATE())) +'-'+CONVERT(VARCHAR,DATEPART(mm,GETDATE()))+'-'+'1', 20) --获取本月开始时间,常用于以月份为单位的统计
    SELECT CAST('2019-12-01' AS datetime)

    五、提取日期中的年月日

    语法:DATEPART(param,date)

    其中,date为日期,

       param是指定要返回日期部分的参数,取值如下表(参数值不区分大小写,风格上推荐大写)

     示例:

    SELECT DATEPART(YY,GETDATE()) '',DATEPART(MM,GETDATE())'',DATEPART(dd,GETDATE())''
    ---年份
    SELECT DATEPART(YY,GETDATE()) '年1',DATEPART(YYYY,GETDATE()) '年2',DATEPART(year,GETDATE()) '年3'
    ---季度
    SELECT DATEPART(QUARTER,GETDATE()) '季度1',DATEPART(qq,GETDATE()) '季度2',DATEPART(q,GETDATE()) '季度3'
    ---月份
    SELECT DATEPART(MONTH,GETDATE()) '月份1',DATEPART(MM,GETDATE()) '月份2',DATEPART(M,GETDATE()) '月份3'
    ---日期
    SELECT DATEPART(DAY,GETDATE()) '日期1',DATEPART(dd,GETDATE()) '日期2',DATEPART(d,GETDATE()) '日期3'
    ---年中天数
    SELECT DATEPART(DAYOFYEAR,GETDATE()) '年中天数1',DATEPART(dy,GETDATE()) '年中天数2',DATEPART(Y,GETDATE()) '年中天数3'
    ---年中周数
    SELECT DATEPART(WEEK,GETDATE()) '年中周数1',DATEPART(wk,GETDATE()) '年中周数2',DATEPART(ww,GETDATE()) '年中周数3'
    ---周几:1-7: 1为周日,2为周一
    SELECT DATEPART(WEEKDAY,GETDATE()) '周几1',DATEPART(DW,GETDATE()) '周几2'
    ---小时
    SELECT DATEPART(HOUR,GETDATE()) '小时',DATEPART(HH,GETDATE()) '小时'
    ---分钟
    SELECT DATEPART(MINUTE,GETDATE()) '分钟1',DATEPART(MI,GETDATE()) '分钟2',DATEPART(N,GETDATE()) '分钟3'
    ---秒钟
    SELECT DATEPART(SECOND,GETDATE()) '秒1',DATEPART(SS,GETDATE()) '秒2',DATEPART(S,GETDATE()) '秒3'
    ---毫秒
    SELECT DATEPART(MILLISECOND,GETDATE()) '毫秒1',DATEPART(MS,GETDATE()) '毫秒2'

     六、判断两个时间段是否有交集

    给定时间区间(begin,end),数据库字段startTime与endTime,现在要判断它们之间是否有交集。

    SELECT * FROM xxx
    WHERE NOT ((endTime < begin) OR (startTime > end))

    *SQL Server 日期格式化输出

    最常用格式

    SELECT CONVERT(VARCHAR(100), GETDATE(), 111)   结果:2010/03/06

    SELECT CONVERT(VARCHAR(100), GETDATE(), 23)    结果:2010-03-06

    T-SQL Script Output format
       
    SELECT CONVERT(VARCHAR(100), GETDATE(), 0) 03  6 2010  4:19PM
    SELECT CONVERT(VARCHAR(100), GETDATE(), 1) 03/06/10
    SELECT CONVERT(VARCHAR(100), GETDATE(), 2) 10.03.06
    SELECT CONVERT(VARCHAR(100), GETDATE(), 3) 06/03/10
    SELECT CONVERT(VARCHAR(100), GETDATE(), 4) 06.03.10
    SELECT CONVERT(VARCHAR(100), GETDATE(), 5) 06-03-10
    SELECT CONVERT(VARCHAR(100), GETDATE(), 6) 06 03 10
    SELECT CONVERT(VARCHAR(100), GETDATE(), 7) 03 06, 10
    SELECT CONVERT(VARCHAR(100), GETDATE(), 8) 16:23:28
    SELECT CONVERT(VARCHAR(100), GETDATE(), 9) 03  6 2010  4:23:40:110PM
    SELECT CONVERT(VARCHAR(100), GETDATE(), 10) 03-06-10
    SELECT CONVERT(VARCHAR(100), GETDATE(), 11) 10/03/06
    SELECT CONVERT(VARCHAR(100), GETDATE(), 12) 100306
    SELECT CONVERT(VARCHAR(100), GETDATE(), 13) 06 03 2010 16:24:39:763
    SELECT CONVERT(VARCHAR(100), GETDATE(), 14) 16:24:50:823
    SELECT CONVERT(VARCHAR(100), GETDATE(), 20) 2010-03-06 16:25:04
    SELECT CONVERT(VARCHAR(100), GETDATE(), 21) 2010-03-06 16:25:18.107
    SELECT CONVERT(VARCHAR(100), GETDATE(), 22) 03/06/10  4:25:27 PM
    SELECT CONVERT(VARCHAR(100), GETDATE(), 23) 2010-03-06
    SELECT CONVERT(VARCHAR(100), GETDATE(), 24) 16:26:48
    SELECT CONVERT(VARCHAR(100), GETDATE(), 25) 2010-03-06 16:26:55.810
    SELECT CONVERT(VARCHAR(100), GETDATE(), 100) 03  6 2010  4:27PM
    SELECT CONVERT(VARCHAR(100), GETDATE(), 101) 03/06/2010
    SELECT CONVERT(VARCHAR(100), GETDATE(), 102) 2010.03.06
    SELECT CONVERT(VARCHAR(100), GETDATE(), 103) 06/03/2010
    SELECT CONVERT(VARCHAR(100), GETDATE(), 104) 06.03.2010
    SELECT CONVERT(VARCHAR(100), GETDATE(), 105) 06-03-2010
    SELECT CONVERT(VARCHAR(100), GETDATE(), 106) 06 03 2010
    SELECT CONVERT(VARCHAR(100), GETDATE(), 107) 03 06, 2010
    SELECT CONVERT(VARCHAR(100), GETDATE(), 108) 16:28:25
    SELECT CONVERT(VARCHAR(100), GETDATE(), 109) 03  6 2010  4:28:35:123PM
    SELECT CONVERT(VARCHAR(100), GETDATE(), 110) 03-06-2010
    SELECT CONVERT(VARCHAR(100), GETDATE(), 111) 2010/03/06
    SELECT CONVERT(VARCHAR(100), GETDATE(), 112) 20100306
    SELECT CONVERT(VARCHAR(100), GETDATE(), 113) 06 03 2010 16:29:25:217
    SELECT CONVERT(VARCHAR(100), GETDATE(), 114) 16:29:32:543
    SELECT CONVERT(VARCHAR(100), GETDATE(), 120) 2010-03-06 16:29:44
    SELECT CONVERT(VARCHAR(100), GETDATE(), 121) 2010-03-06 16:29:51.030
    SELECT CONVERT(VARCHAR(100), GETDATE(), 126) 2010-03-06T16:29:59.327
    SELECT CONVERT(VARCHAR(100), GETDATE(), 130) 21 ???? ????? 1431  4:30:06:780PM
    SELECT CONVERT(VARCHAR(100), GETDATE(), 131) 21/03/1431  4:30:21:990PM
       

    -----------

  • 相关阅读:
    学习笔记之正向代理和反向代理的区别
    PHP程序员的进阶之路
    go语言笔记——切片函数常见操作,增删改查和搜索、排序
    golang的垃圾回收(GC)机制
    堆栈的详细讲解
    springAop必导jar包
    sring框架的jdbc应用
    下载jar包方法
    mysql数据乱码
    Eclipse打包java工程
  • 原文地址:https://www.cnblogs.com/dyhao/p/11394069.html
Copyright © 2011-2022 走看看