• SQLServer日期函数及查询当日昨日本周本月本季度本年数据


    1. 查询当日、昨日、本周、本月、本季度、本年数据

    -- 查询今日数据
    select count(0) todayCount from alarm_data where DATEDIFF(dd,upload_date,GETDATE())=0
    select count(0) todayCount from alarm_data where CONVERT(VARCHAR(10),upload_date,120)=CONVERT(VARCHAR(10),GETDATE(),120)
    
    -- 查询昨日数据
    select count(0) todayCount from alarm_data where DATEDIFF(dd,upload_date,GETDATE()-1)=0
    select count(0) yesterdayCount from alarm_data where CONVERT(VARCHAR(10),upload_date,120)=CONVERT(VARCHAR(10),GETDATE()-1,120)
    
    -- 查询本周数据
    select count(0) weekCount from alarm_data where upload_date BETWEEN DATEADD( week, DATEDIFF( week, 0, GETDATE() - 1 ), 0 ) AND GETDATE() 
    
    -- 查询本月数据
    select count(0) monthCount from alarm_data where DATEDIFF(month,upload_date,GETDATE())=0
    select count(0) monthCount from alarm_data where CONVERT(VARCHAR(7),upload_date,120)=CONVERT(VARCHAR(7),GETDATE(),120)
    
    -- 查询本季度数据
    select count(0) quarterCount from alarm_data where DATEPART(QQ,upload_date)=DATEPART(QQ,GETDATE()) and DATEPART(YY,upload_date)=DATEPART(YY,GETDATE())
    
    -- 查询本年数据
    select count(0) yearCount from alarm_data where DATEPART(YY,upload_date)=DATEPART(YY,GETDATE())
    select count(0) yearCount from alarm_data where CONVERT(VARCHAR(4),upload_date,120)=CONVERT(VARCHAR(4),GETDATE(),120)
    select count(0) yearCount from alarm_data where year(upload_date)=year(getdate())
    

    2. 获取其他日期数据

    -- 获取今天日期(年-月-日)
    select 今天日期 = CONVERT(VARCHAR(10),GETDATE(),120)
    select 今天日期 = CONVERT(DATETIME,GETDATE(),120)
    
    -- 获取今日时间 (年-月-日 时:分:秒:毫秒)
    select 今日时间 = GETDATE()
    
    -- 获取昨天日期
    select 昨天日期 = CONVERT(VARCHAR(10),GETDATE()-1,120)
    
    -- 获取本周指定星期的日期
    select 本周周一 = DATEADD( week, DATEDIFF( week, 0, GETDATE() - 1 ), 0 )
    select 本周周日 = DATEADD( week, DATEDIFF( week, 0, GETDATE() - 1 ), 6 ) 
    
    -- 获取今天/指定日期的星期数
    select 今天的星期数 = DATEPART(ww,GETDATE())
    select 今天的星期数 = DATENAME(weekday, GETDATE())
    select 本年第多少周 = DATENAME(week,GETDATE())
    
    -- 获取本月月份
    select 本月月份 = DATEPART(MM,GETDATE())
    select 本月月份 = month(GETDATE())
    
    -- 获取上个月最后一天
    select 上个月最后一天 = DATEADD(ms,-3, DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0))
    select 上个月最后一天 = CONVERT(VARCHAR(10),DATEADD(ms,-3, DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)),120)
    
    -- 获取本季度第一天日期
    select 本季度第一天日期 = DATEADD( qq, DATEDIFF (qq, 0, GETDATE()), 0)
    select 本季度第一天日期 = CONVERT(VARCHAR(10),DATEADD( qq, DATEDIFF (qq, 0, GETDATE()), 0),120)
    
    -- 获取今年年份
    select 今年年份 = DATEPART(YY,GETDATE())
    select 今年年份 = year(GETDATE())
    
    -- 获取两个指定时间的时间差
    select 相差天数 = DATEDIFF(day,'2008-10-01',GETDATE()) 
    select 相差周数 = DATEDIFF(week,'2008-10-01',GETDATE()) 
    select 相差月数 = DATEDIFF(month,'2008-10-01',GETDATE())
    select 相差年数 = DATEDIFF(year,'2008-10-01',GETDATE())
    

    查询结果:

    3. 日期函数:

    函数 功能
    Convert(data_type(length),date,style) 把日期转换为新数据类型,data_type(length)规定目标数据类型(带有可选的长度),date规定需要转换的值,style规定日期/时间的输出格式
    GetDate( ) 返回系统目前的日期与时间
    DateDiff (datepart,startdate,enddate) 返回两个日期之间的天数
    DateAdd (type,number,date) 以type指定的方式,加上number之后的日期
    DatePart (type,date) 返回日期date中,type指定部分所对应的整数值
    DateName (type,date) 返回日期date中,type指定部分所对应的字符串名称
    GETDATE() 返回系统目前的日期与时间

    3.1 日期函数中参数 type 的设定值:

    说明 缩写(Sql Server) Access 和 ASP
    Year Yy yyyy
    Quarter Qq q
    Month Mm m
    年中的日 Day of year Dy y
    Day Dd d
    周数 Weekday Dw w
    第几周 Week Wk ww
    小时 Hour Hh h
    分钟 Minute Mi n
    秒钟 Second Ss s
    毫秒 Millisecond Ms -
    微秒 Microsecond Mcs -
    纳秒 Nanosecond Ns -

    3.2 Convert(data_type(length),date,style)函数中参数 style 的设定值:

    Style ID Style 格式
    100 或者 0 mon dd yyyy hh:miAM (或者 PM)
    101 mm/dd/yy
    102 yy.mm.dd
    103 dd/mm/yy
    104 dd.mm.yy
    105 dd-mm-yy
    106 dd mon yy
    107 Mon dd, yy
    108 hh:mm:ss
    109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
    110 mm-dd-yy
    111 yy/mm/dd
    112 yymmdd
    113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)
    114 hh:mi:ss:mmm(24h)
    120 或者 20 yyyy-mm-dd hh:mi:ss(24h)
    121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h)
    126 yyyy-mm-ddThh:mm:ss.mmm(没有空格)
    130 dd mon yyyy hh:mi:ss:mmmAM
    131 dd/mm/yy hh:mi:ss:mmmAM

    举栗子:

    SELECT CONVERT(varchar(100), GETDATE(), 0)   --> 01 13 2021 16:17AM
    SELECT CONVERT(varchar(100), GETDATE(), 1)   --> 01/13/21
    SELECT CONVERT(varchar(100), GETDATE(), 2)   --> 21.01.13
    SELECT CONVERT(varchar(100), GETDATE(), 3)   --> 13/01/21
    SELECT CONVERT(varchar(100), GETDATE(), 4)   --> 13.01.21
    SELECT CONVERT(varchar(100), GETDATE(), 5)   --> 13-01-21
    SELECT CONVERT(varchar(100), GETDATE(), 6)   --> 13 01 21
    SELECT CONVERT(varchar(100), GETDATE(), 7)   --> 01 13, 21
    SELECT CONVERT(varchar(100), GETDATE(), 8)   --> 16:17:46
    SELECT CONVERT(varchar(100), GETDATE(), 9)   --> 01 13 2021 16:17:46:827AM
    SELECT CONVERT(varchar(100), GETDATE(), 10)  --> 01-13-21
    SELECT CONVERT(varchar(100), GETDATE(), 11)  --> 21/01/13
    SELECT CONVERT(varchar(100), GETDATE(), 12)  --> 210113
    SELECT CONVERT(varchar(100), GETDATE(), 13)  --> 13 01 2021 16:17:46:937
    SELECT CONVERT(varchar(100), GETDATE(), 14)  --> 16:17:46:967
    SELECT CONVERT(varchar(100), GETDATE(), 20)  --> 2021-01-13 16:17:47
    SELECT CONVERT(varchar(100), GETDATE(), 21)  --> 2021-01-13 16:17:47.157
    SELECT CONVERT(varchar(100), GETDATE(), 22)  --> 01/13/21 16:17:47 AM
    SELECT CONVERT(varchar(100), GETDATE(), 23)  --> 2021-01-13
    SELECT CONVERT(varchar(100), GETDATE(), 24)  --> 16:17:47
    SELECT CONVERT(varchar(100), GETDATE(), 25)  --> 2021-01-13 16:17:47.250
    SELECT CONVERT(varchar(100), GETDATE(), 100) --> 01 13 2021 16:17AM
    SELECT CONVERT(varchar(100), GETDATE(), 101) --> 01/13/2021
    SELECT CONVERT(varchar(100), GETDATE(), 102) --> 2021.01.13
    SELECT CONVERT(varchar(100), GETDATE(), 103) --> 13/01/2021
    SELECT CONVERT(varchar(100), GETDATE(), 104) --> 13.01.2021
    SELECT CONVERT(varchar(100), GETDATE(), 105) --> 13-01-2021
    SELECT CONVERT(varchar(100), GETDATE(), 106) --> 13 01 2021
    SELECT CONVERT(varchar(100), GETDATE(), 107) --> 01 13, 2021
    SELECT CONVERT(varchar(100), GETDATE(), 108) --> 16:17:49
    SELECT CONVERT(varchar(100), GETDATE(), 109) --> 01 13 2021 16:17:49:437AM
    SELECT CONVERT(varchar(100), GETDATE(), 110) --> 01-13-2021
    SELECT CONVERT(varchar(100), GETDATE(), 111) --> 2021/01/13
    SELECT CONVERT(varchar(100), GETDATE(), 112) --> 20210113
    SELECT CONVERT(varchar(100), GETDATE(), 113) --> 13 01 2021 16:17:49:513
    SELECT CONVERT(varchar(100), GETDATE(), 114) --> 16:17:49:547
    SELECT CONVERT(varchar(100), GETDATE(), 120) --> 2021-01-13 16:17:49
    SELECT CONVERT(varchar(100), GETDATE(), 121) --> 2021-01-13 16:17:49.700
    SELECT CONVERT(varchar(100), GETDATE(), 126) --> 2021-01-13T16:17:49.827
    SELECT CONVERT(varchar(100), GETDATE(), 130) --> 18 ???? ?????? 1427 16:17:49:907AM
    SELECT CONVERT(varchar(100), GETDATE(), 131) --> 18/04/1427 16:17:49:920AM
    

    Convert(data_type(length),date,style)函数中的参数 data_type(length)

    该参数除了使用字符串类型:VARCHAR(length),还可以使用日期类型:DATETIME

    select 今天日期 = CONVERT(VARCHAR(100),GETDATE(),120) --> 2021-01-13 16:24:51
    select 今天日期 = CONVERT(VARCHAR(10),GETDATE(),120)  --> 2021-01-13
    select 今天日期 = CONVERT(VARCHAR(7),GETDATE(),120)   --> 2021-01
    select 今天日期 = CONVERT(VARCHAR(4),GETDATE(),120)   --> 2021
    select 今天日期 = CONVERT(DATETIME,GETDATE(),120)     --> 2021-01-13 16:24:51.357
    
  • 相关阅读:
    linux环境下安装redis扩展
    LINUX环境下SVN安装与配置(利用钩子同步开发环境与测试环境)
    Linux环境下网卡配置
    MAC 下虚拟主机的配置
    从json_encode过来的的字符串被返回到html页面时的解析
    for循环绑定事件,闭包思想!
    js8月-4号,,思想
    三种添加事件的方式
    smarty第一天
    5秒钟后自动跳转!!!!
  • 原文地址:https://www.cnblogs.com/congyiblog/p/14272893.html
Copyright © 2020-2023  润新知