您的位置:首页 > 数据库

sql server 日期处理

2012-07-16 15:10 204 查看
convert(varchar(10),getdate(),120)
自我理解肯定不标准
参数:1要获得的日期长度  比如:2012-07-16 为varchar(10), 2012-07-16 15   (解释:15为下午三点) varchar(13)
第二个为时间字段
第三个为类型 比如 20120716 格式或者  2012-07-16 格式

下面为转的

获取当前日期利用 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: