zoukankan      html  css  js  c++  java
  • 如何用sql获取当前周的7个时间 (所有情况)

    如何用sql获取当前周的7个时间  

    2010-08-29 22:39:35|  分类: SQL Server |  标签: |字号 订阅

     
     
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客--按日 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客select sum(consume),day([date]) from consume_record where year([date]) = '2006' group by day([date]) 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客--按周quarter 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客select sum(consume),datename(week,[date]) from consume_record where year([date]) = '2006' group by datename(week,[date]) 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客--按月 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客select sum(consume),month([date]) from consume_record where year([date]) = '2006' group by month([date]) 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客--按季 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客select sum(consume),datename(quarter,[date]) from consume_record where year([date]) = '2006' group by datename(quarter,[date]) 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客--指定日期你就看上面的例子变通下呀,无非就是一个聚合函数和Group by 
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客
    如何用sql获取当前周的7个时间 - 转角空 - zhuanjiaokong的博客select [date],sum(consume) from consume_record where [date] between '2006-06-01' and '2006-07-10' group by [date]  

    查询当前周:
    select * from table
    where datediff(wk,startdate,getdate())=0

    查询下一周(也就是当前周的下一周):
    select * from table
    where datediff(wk,startdate,getdate())=-1

    查询上一周(也就是当前周的上一周):
    select * from table
    where datediff(wk,startdate,getdate())=1
    ///////////////////////////////////////////

    declare @today datetime
    select @today = convert(varchar(10), getdate(), 20)
    declare @weekday int 
    select @weekday = datepart(weekday, @today)
    declare @st datetime, @et datetime 
    select @st = dateadd(dd, 1-@weekday, @today), @et = dateadd(dd, 7-@weekday, @today)
    select * from table
    where startdate between @st and @et
    当然,这里的开始时间、结束时间跟你sql server的设置有关,即你的周是从周一开始还是从周日开始。

    DECLARE @dt datetime
    SET @dt=GETDATE()
    DECLARE @number int
    SET @number=3
    --1.指定日期该年的第一天或最后一天
    --A. 年的第一天
    SELECT CONVERT(char(5),@dt,120)+'1-1'
    --B. 年的最后一天
    SELECT CONVERT(char(5),@dt,120)+'12-31'

    --2.指定日期所在季度的第一天或最后一天
    --A. 季度的第一天
    SELECT CONVERT(datetime,
        CONVERT(char(8),
            DATEADD(Month,
                DATEPART(Quarter,@dt)*3-Month(@dt)-2,
                @dt),
            120)+'1')
    --B. 季度的最后一天(CASE判断法)
    SELECT CONVERT(datetime,
        CONVERT(char(8),
            DATEADD(Month,
                DATEPART(Quarter,@dt)*3-Month(@dt),
                @dt),
            120)
        +CASE WHEN DATEPART(Quarter,@dt) in(1,4)
            THEN '31'ELSE '30' END)
    --C. 季度的最后一天(直接推算法)
    SELECT DATEADD(Day,-1,
        CONVERT(char(8),
            DATEADD(Month,
                1+DATEPART(Quarter,@dt)*3-Month(@dt),
                @dt),
            120)+'1')

    --3.指定日期所在月份的第一天或最后一天
    --A. 月的第一天
    SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')
    --B. 月的最后一天
    SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')
    --C. 月的最后一天(容易使用的错误方法)
    SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))

    --4.指定日期所在周的任意一天
    SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)

    --5.指定日期所在周的任意星期几
    --A.  星期天做为一周的第1天
    SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)
    --B.  星期一做为一周的第1天
    SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)
      
    具体例子: 
    SELECT CONVERT(varchar(100), GETDATE(), 0)union--: 05 16 2006 10:57AM 
    SELECT CONVERT(varchar(100), GETDATE(), 1)union--: 05/16/06 
    SELECT CONVERT(varchar(100), GETDATE(), 2)union--: 06.05.16 
    SELECT CONVERT(varchar(100), GETDATE(), 3)union--: 16/05/06 
    SELECT CONVERT(varchar(100), GETDATE(), 4)union--: 16.05.06 
    SELECT CONVERT(varchar(100), GETDATE(), 5)union--: 16-05-06 
    SELECT CONVERT(varchar(100), GETDATE(), 6)union--: 16 05 06 
    SELECT CONVERT(varchar(100), GETDATE(), 7)union--: 05 16, 06 
    SELECT CONVERT(varchar(100), GETDATE(), 8)union--: 10:57:46 
    SELECT CONVERT(varchar(100), GETDATE(), 9)union--: 05 16 2006 10:57:46:827AM 
    SELECT CONVERT(varchar(100), GETDATE(), 10)union--: 05-16-06 
    SELECT CONVERT(varchar(100), GETDATE(), 11)union--: 06/05/16 
    SELECT CONVERT(varchar(100), GETDATE(), 12)union--: 060516 
    SELECT CONVERT(varchar(100), GETDATE(), 13)union--: 16 05 2006 10:57:46:937 
    SELECT CONVERT(varchar(100), GETDATE(), 14)union--: 10:57:46:967 
    SELECT CONVERT(varchar(100), GETDATE(), 20)union--: 2006-05-16 10:57:47 
    SELECT CONVERT(varchar(100), GETDATE(), 21)union--: 2006-05-16 10:57:47.157 
    SELECT CONVERT(varchar(100), GETDATE(), 22)union--: 05/16/06 10:57:47 AM 
    SELECT CONVERT(varchar(100), GETDATE(), 23)union--: 2006-05-16 
    SELECT CONVERT(varchar(100), GETDATE(), 24)union---: 10:57:47 
    SELECT CONVERT(varchar(100), GETDATE(), 25)union--: 2006-05-16 10:57:47.250 
    SELECT CONVERT(varchar(100), GETDATE(), 101)union--: 05/16/2006 
    SELECT CONVERT(varchar(100), GETDATE(), 102)union--: 2006.05.16 
    SELECT CONVERT(varchar(100), GETDATE(), 103)union--: 16/05/2006 
    SELECT CONVERT(varchar(100), GETDATE(), 104)union---: 16.05.2006 
    SELECT CONVERT(varchar(100), GETDATE(), 105)union--: 16-05-2006 
    SELECT CONVERT(varchar(100), GETDATE(), 106)union--: 16 05 2006 
    SELECT CONVERT(varchar(100), GETDATE(), 107)union---: 05 16, 2006 
    SELECT CONVERT(varchar(100), GETDATE(), 108)union--: 10:57:49 
    SELECT CONVERT(varchar(100), GETDATE(), 109)union--: 05 16 2006 10:57:49:437AM 
    SELECT CONVERT(varchar(100), GETDATE(), 110)union--: 05-16-2006 
    SELECT CONVERT(varchar(100), GETDATE(), 111)union--: 2006/05/16 
    SELECT CONVERT(varchar(100), GETDATE(), 112)union--: 20060516 
    SELECT CONVERT(varchar(100), GETDATE(), 113)union--: 16 05 2006 10:57:49:513 
    SELECT CONVERT(varchar(100), GETDATE(), 114)union--: 10:57:49:547 
    SELECT CONVERT(varchar(100), GETDATE(), 120)union--: 2006-05-16 10:57:49 
    SELECT CONVERT(varchar(100), GETDATE(), 121)union--: 2006-05-16 10:57:49.700 
    SELECT CONVERT(varchar(100), GETDATE(), 126)union--: 2006-05-16T10:57:49.827 
    SELECT CONVERT(varchar(100), GETDATE(), 130)union--: 18 ???? ?????? 1427 10:57:49:907AM 
    SELECT CONVERT(varchar(100), GETDATE(), 131)--: 18/04/1427 10:57:49:920AM 
  • 相关阅读:
    Blank page instead of the SharePoint Central Administration site
    BizTalk 2010 BAM Configure
    Use ODBA with Visio 2007
    Handling SOAP Exceptions in BizTalk Orchestrations
    BizTalk与WebMethods之间的EDI交换
    Append messages in BizTalk
    FTP protocol commands
    Using Dynamic Maps in BizTalk(From CodeProject)
    Synchronous To Asynchronous Flows Without An Orchestration的简单实现
    WSE3 and "Action for ultimate recipient is required but not present in the message."
  • 原文地址:https://www.cnblogs.com/ywilson/p/2249624.html
Copyright © 2011-2022 走看看