使用SQL Server 2000
日期如20120101, 20120201, 20120301...
Fomat是yyyymmdd
我想显示从2012年1月12日,02/2012,03/2012日期的月份和年份...
预期产出
01/2012
02/2012
03/2012
我不想要1/2012, 2/2012, 3/2012...
任何人都可以给我一个想法或查询帮助......
答案 0 :(得分:2)
您可以使用以下内容:
DECLARE @input VARCHAR(20)
SET @input = '20120101'
-- convert the 20120101 to a DATETIME
DECLARE @thedate DATETIME
SELECT @thedate = CONVERT(DATETIME, @input, 112)
-- reformat that DATETIME to your needs
DECLARE @output VARCHAR(20)
SET @output = RIGHT('00' + CAST(DATEPART(MONTH, @thedate) AS VARCHAR(2)), 2) +
'/' + CAST(DATEPART(YEAR, @thedate) AS VARCHAR(4))
SELECT @output
您可以将此功能“隐藏”到用户定义的函数中,以使其更易于在代码中使用:
CREATE FUNCTION dbo.MonthYearFromDate (@input VARCHAR(20))
RETURNS VARCHAR(20)
AS BEGIN
DECLARE @thedate DATETIME
SELECT @thedate = CONVERT(DATETIME, @input, 112)
DECLARE @output VARCHAR(20)
SET @output = RIGHT('00' + CAST(DATEPART(MONTH, @thedate) AS VARCHAR(2)), 2) + '/' + CAST(DATEPART(YEAR, @thedate) AS VARCHAR(4))
RETURN @output
END
然后你可以像这样调用它:
SELECT dbo.MonthYearFromDate('20120515')
并获取输出
05/2012
答案 1 :(得分:1)
SELECT CAST(datepart(month,getdate()) AS CHAR) + '/' + CAST(datepart(year,getdate()) AS CHAR)
而不是函数getdate(),你需要你的日期字段。
答案 2 :(得分:0)
查看SUBSTRING函数http://msdn.microsoft.com/en-us/library/ms187748.aspx
您还应该考虑将日期存储为DATETIME(我假设您使用的是VARCHAR?)
答案 3 :(得分:0)
搜索extract()函数。它会解决你的问题。