对于MS-SQL
DECLARE @d1 INT; SET @d1 = 201208
DECLARE @d2 VARCHAR(6); SET @d2 = 201208
SELECT 'data type'='int'
, 'in'[email protected]
, 'out'=CONVERT(VARCHAR(3), CAST(LEFT(@d1,6)+'01' AS DATE), 107)
+ '-' + LEFT(@d1,4)
SELECT 'data type'='varchar'
, 'in'[email protected]
, 'out'=CONVERT(VARCHAR(3), CAST(@d2+'01' AS DATE), 107)
+ '-' +LEFT(@d2,4)
/* -- OUTPUT
data type in out
int 201208 Aug-2012
data type in out
varchar 201208 Aug-2012
*/
您也可以使用DATENAME
SELECT 'data type' = 'int'
, 'in' = @d1
, 'out' = LEFT(DATENAME(month, CAST(LEFT(@d1,6)+'01' AS DATE)), 3)
+ '-' + LEFT(@d1,4)
SELECT 'data type' = 'varchar'
, 'in' = @d2
, 'out' = LEFT(DATENAME(month, CAST(@d2+'01' AS DATE)), 3)
+ '-' + LEFT(@d2,4)
,或者使用不同的STUFF :)
DECLARE @d1 INT; SET @d1 = 201208
DECLARE @d2 VARCHAR(6); SET @d2 = 201208
SELECT 'data type' = 'int'
, 'in' = @d1
, 'out' = STUFF(CONVERT(VARCHAR(20), CAST(LEFT(@d1,6)+'01' AS DATE), 107), 4, 5, '-')
SELECT 'data type' = 'varchar'
, 'in' = @d2
, 'out' = STUFF(CONVERT(VARCHAR(20), CAST(@d2+'01' AS DATE), 107), 4, 5, '-')
这将很大程度上取决于您正在使用的RDBMS。所以,请告诉我们一个是(和版本)。 – Lamak 2013-02-18 18:24:56
嗨拉马克,我一直在使用Microsoft SQL Server 2012 - 11.0.2100.60(X64) 谢谢 – poshak 2013-02-18 18:34:41