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 
  • 相关阅读:
    HTML5元素标记释义
    Mvc使用Partial View 来封装上传控件
    订单页过滤,sql写法
    防止提交重复订单的方法
    查询数据库所有列
    asp.net 异常处理
    7. DateTime,TimeSpan
    8.1.thread
    8.2.Task
    2.2. Array
  • 原文地址:https://www.cnblogs.com/ywilson/p/2249624.html
Copyright © 2011-2022 走看看