• 几个SQL取日期的小文档


    Sqlserver中经常要操作一些时间类型的字段转换,我又不太记得住,所以搜集了以下的一些SqlserverConvert DateTime相关的资料发表在自己的小站里,方便自己以后要用的时候寻找,望对大家也有帮助.

    将sqlserver中table表的[datetime]字段值‘2007-11-07 16:41:35.033’ 改为‘2007-11-07 00:00:00‘去除了时分秒.[datetime]字段要为datetime类型的哦. UPDATE table SET [datetime]= Convert(char(11),[datetime],120)

    获取当前日期利用 convert 来转换成我们需要的datetime格式.
    select CONVERT(varchar(12) , getdate(), 112 )
    20040912
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 102 )
    2004.09.12
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 101 )
    09/12/2004
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 103 )
    12/09/2004
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 104 )
    12.09.2004
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 105 )
    12-09-2004
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 106 )
    12 09 2004
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 107 )
    09 12, 2004
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 108 )
    11:06:08
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 109 )
    09 12 2004 1
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 110 )
    09-12-2004
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 113 )
    12 09 2004 1
    ------------------------------------------------------------
    select CONVERT(varchar(12) , getdate(), 114 )
    11:06:08.177
    ------------------------------------------------------------

    declare @dateTime DateTime--定义一个datetime的变量
    set @dateTime=getdate(); --获取系统当前时间,并赋值给@dateTime字段

    --短日期格式:yyyy-m-d
    SELECT REPLACE(CONVERT(varchar(10),@dateTime,120),N'-0','-')

    --长日期格式:yyyy年mm月dd日
    SELECT STUFF(STUFF(CONVERT(char(8),@dateTime,112),5,0,N'年'),8,0,N'月')+N'日'

    --长日期格式:yyyy年m月d日
    SELECT DATENAME(Year,@dateTime)+N'年'+CAST(DATEPART(Month,@dateTime) AS varchar)+N'月'+DATENAME(Day,@dateTime)+N'日'

    --完整日期+时间格式:yyyy-mm-dd hh:mi:ss:mmm
    SELECT CONVERT(char(11),@dateTime,120)+CONVERT(char(12),@dateTime,114)

    ------------------------------------------------------------------------------------------------

    2、日期推算处理
    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)

  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/luxx/p/1827942.html
Copyright © 2020-2023  润新知