SET @currentYear=CONVERT(DATETIME,@year+'-1-1',120)
SET @currentMonth=CONVERT(DATETIME,@year+'-'+@month+'-'+'1',120)希望各位童鞋帮忙解释下,啥意思,本人对sql server不是很了解。学的很烂

解决方案 »

  1.   

    拼接字符串转换为datetime类型
      

  2.   

    把日期格式的字符串数据按规定的格式转换成日期时间型
    这里的120表示将字符串数据 2011-1-1 转换成 yyyy-mm-dd hh:mi:ss这种格式的日期时间类型
      

  3.   

    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )expression    任何有效的表达式。data_type    作为目标的系统提供数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型。有关可用数据类型的详细信息,请参阅数据类型 (Transact-SQL)。length    nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。对于 CONVERT,如果未指定 length,则默认为 30 个字符。style    数据格式的样式,用于将 datetime 或 smalldatetime 数据转换成字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型),或将已知日期或时间格式的字符数据转换成 datetime 或 smalldatetime 数据;或者是字符串格式,用于将 float、real、money 或 smallmoney 数据转换成字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。如果 style 为 NULL,则返回的结果也为 NULL。日期格式轉換參照
    http://technet.microsoft.com/zh-cn/library/ms187928%28SQL.90%29.aspx
      

  4.   

    --日期转换参数,值得收藏
    select CONVERT(varchar, getdate(), 120 )
    2004-09-12 11:06:08select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
    20040912110608select CONVERT(varchar(12) , getdate(), 111 )
    2004/09/12select CONVERT(varchar(12) , getdate(), 112 )
    20040912select CONVERT(varchar(12) , getdate(), 102 )
    2004.09.12其它我不常用的日期格式转换方法:select CONVERT(varchar(12) , getdate(), 101 )
    09/12/2004select CONVERT(varchar(12) , getdate(), 103 )
    12/09/2004select CONVERT(varchar(12) , getdate(), 104 )
    12.09.2004select CONVERT(varchar(12) , getdate(), 105 )
    12-09-2004select CONVERT(varchar(12) , getdate(), 106 )
    12 09 2004select CONVERT(varchar(12) , getdate(), 107 )
    09 12, 2004select CONVERT(varchar(12) , getdate(), 108 )
    11:06:08select CONVERT(varchar(12) , getdate(), 109 )
    09 12 2004 1select CONVERT(varchar(12) , getdate(), 110 )
    09-12-2004select CONVERT(varchar(12) , getdate(), 113 )
    12 09 2004 1select CONVERT(varchar(12) , getdate(), 114 )
    11:06:08.177
      

  5.   

    那个SET @currentYear=CONVERT(DATETIME,@year+'-1-1',120)那个120我知道是yyyy-mm-dd hh:mi:ss(24h),那个里面的'-1-1'是啥意思,谁知道
      

  6.   


    --日期格式化函数:
    Select CONVERT(varchar(100), GETDBTE(), 0): 05 16 2006 10:57BM 
      Select CONVERT(varchar(100), GETDBTE(), 1): 05/16/06 
      Select CONVERT(varchar(100), GETDBTE(), 2): 06.05.16 
      Select CONVERT(varchar(100), GETDBTE(), 3): 16/05/06 
      Select CONVERT(varchar(100), GETDBTE(), 4): 16.05.06 
      Select CONVERT(varchar(100), GETDBTE(), 5): 16-05-06 
      Select CONVERT(varchar(100), GETDBTE(), 6): 16 05 06 
      Select CONVERT(varchar(100), GETDBTE(), 7): 05 16, 06 
      Select CONVERT(varchar(100), GETDBTE(), 8 ): 10:57:46 
      Select CONVERT(varchar(100), GETDBTE(), 9): 05 16 2006 10:57:46:827BM 
      Select CONVERT(varchar(100), GETDBTE(), 10): 05-16-06 
      Select CONVERT(varchar(100), GETDBTE(), 11): 06/05/16 
      Select CONVERT(varchar(100), GETDBTE(), 12): 060516 
      Select CONVERT(varchar(100), GETDBTE(), 13): 16 05 2006 10:57:46:937 
      Select CONVERT(varchar(100), GETDBTE(), 14): 10:57:46:967 
      Select CONVERT(varchar(100), GETDBTE(), 20): 2006-05-16 10:57:47 
      Select CONVERT(varchar(100), GETDBTE(), 21): 2006-05-16 10:57:47.157 
      Select CONVERT(varchar(100), GETDBTE(), 22): 05/16/06 10:57:47 BM 
      Select CONVERT(varchar(100), GETDBTE(), 23): 2006-05-16 
      Select CONVERT(varchar(100), GETDBTE(), 24): 10:57:47 
      Select CONVERT(varchar(100), GETDBTE(), 25): 2006-05-16 10:57:47.250 
      Select CONVERT(varchar(100), GETDBTE(), 100): 05 16 2006 10:57BM 
      Select CONVERT(varchar(100), GETDBTE(), 101): 05/16/2006 
      Select CONVERT(varchar(100), GETDBTE(), 102): 2006.05.16 
      Select CONVERT(varchar(100), GETDBTE(), 103): 16/05/2006 
      Select CONVERT(varchar(100), GETDBTE(), 104): 16.05.2006 
      Select CONVERT(varchar(100), GETDBTE(), 105): 16-05-2006 
      Select CONVERT(varchar(100), GETDBTE(), 106): 16 05 2006 
      Select CONVERT(varchar(100), GETDBTE(), 107): 05 16, 2006 
      Select CONVERT(varchar(100), GETDBTE(), 108): 10:57:49 
      Select CONVERT(varchar(100), GETDBTE(), 109): 05 16 2006 10:57:49:437BM 
      Select CONVERT(varchar(100), GETDBTE(), 110): 05-16-2006 
      Select CONVERT(varchar(100), GETDBTE(), 111): 2006/05/16 
      Select CONVERT(varchar(100), GETDBTE(), 112): 20060516 
      Select CONVERT(varchar(100), GETDBTE(), 113): 16 05 2006 10:57:49:513 
      Select CONVERT(varchar(100), GETDBTE(), 114): 10:57:49:547 
      Select CONVERT(varchar(100), GETDBTE(), 120): 2006-05-16 10:57:49 
      Select CONVERT(varchar(100), GETDBTE(), 121): 2006-05-16 10:57:49.700 
      Select CONVERT(varchar(100), GETDBTE(), 126): 2006-05-16T10:57:49.827 
      Select CONVERT(varchar(100), GETDBTE(), 130): 18 ???? ?????? 1427 10:57:49:907BM 
      Select CONVERT(varchar(100), GETDBTE(), 131): 18/04/1427 10:57:49:920BM 
      

  7.   


    SET @currentYear=CONVERT(DATETIME,@year+'-1-1',120)
    某年1月1日
    120表示以 yyyy-mm-dd hh:mi:ss这种格式显示SET @currentMonth=CONVERT(DATETIME,@year+'-'+@month+'-'+'1',120)
    某年某月1日
    120表示以 yyyy-mm-dd hh:mi:ss这种格式显示
      

  8.   

    select CONVERT(varchar, getdate(), 120 )
    2004-09-12 11:06:08select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
    20040912110608可以详细查询CONVERT函数用法。