zoukankan      html  css  js  c++  java
  • sql中计算某天是全年的第几周及取得某天的所在周的周一的日期的函数

    --取得某天的所在周的周一的函数
    CREATE FUNCTION getMondayBtDate(@date datetime)
    RETURNS date
    AS
    begin
        DECLARE @week INT,@cnt INT
        select @week = DATEPART(dw,@date)
        SET @cnt = 2 - @week
        IF(@week = 1)
        BEGIN
            SET @cnt = -6
        END
        RETURN DATEADD(DAY, @cnt, @date)
    end
    
    
    --获取某天是当前年份中的第几周,以周一为一周的开始
    CREATE FUNCTION getWeekNoBtDate(@date datetime)
    RETURNS date
    AS
    begin
        DECLARE @dtMonday DATETIME,@cnt INT;
        select @dtMonday = dbo.getMondayBtDate(@date)
        SELECT @cnt = DATEPART(dy,@dtMonday)
        RETURN CAST(year(@dtMonday) AS NVARCHAR) + CASE WHEN (@cnt+6)/7 < 10 THEN '0'+CAST((@cnt+6)/7 AS nvarchar) ELSE CAST((@cnt+6)/7 AS NVARCHAR) END
    end

    SQL Server DATEPART() 函数

    定义和用法

    DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

    语法

    DATEPART(datepart,date)

    date 参数是合法的日期表达式。datepart 参数可以是下列的值:

    datepart缩写
    yy, yyyy
    季度 qq, q
    mm, m
    年中的日 dy, y
    dd, d
    wk, ww
    星期 dw, w
    小时 hh
    分钟 mi, n
    ss, s
    毫秒 ms
    微妙 mcs
    纳秒 ns

    实例

    假设我们有下面这个 "Orders" 表:

    OrderIdProductNameOrderDate
    1 'Computer' 2008-12-29 16:25:46.635

    我们使用如下 SELECT 语句:

    SELECT DATEPART(yyyy,OrderDate) AS OrderYear,
    DATEPART(mm,OrderDate) AS OrderMonth,
    DATEPART(dd,OrderDate) AS OrderDay
    FROM Orders
    WHERE OrderId=1
    

    结果:

    OrderYearOrderMonthOrderDay
    2008 12 29
  • 相关阅读:
    [UE4]创建对象的的几种姿势(C++)
    [UE4]IES光源概述文件
    [UE4]C++ STL总结
    [UE4]C++中引用(&)的用法和应用实例
    [UE4]单映射:TMap容器,字典表
    [UE4]集合:TSet容器
    [UE4]动态数组:TArray容器
    [UE4] 虚幻4学习---UE4中的字符串转换
    [UE4]使用PlayerController获取鼠标点击时的坐标
    [UE4]C 语言动态数组
  • 原文地址:https://www.cnblogs.com/itjeff/p/8202947.html
Copyright © 2011-2022 走看看