使用 SQL Server 2000
日期喜欢20120101, 20120201, 20120301...
格式是yyyymmdd
我想显示从 01/2012、02/2012、03/2012 等日期开始的月份和年份...
预期产出
01/2012
02/2012
03/2012
我不想1/2012, 2/2012, 3/2012...
任何人都可以给我一个想法或查询帮助....
使用 SQL Server 2000
日期喜欢20120101, 20120201, 20120301...
格式是yyyymmdd
我想显示从 01/2012、02/2012、03/2012 等日期开始的月份和年份...
预期产出
01/2012
02/2012
03/2012
我不想1/2012, 2/2012, 3/2012...
任何人都可以给我一个想法或查询帮助....
你可以使用这样的东西:
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
SELECT CAST(datepart(month,getdate()) AS CHAR) + '/' + CAST(datepart(year,getdate()) AS CHAR)
您需要日期字段,而不是函数 getdate()。
看看 SUBSTRING 函数http://msdn.microsoft.com/en-us/library/ms187748.aspx
您还应该考虑将日期存储为 DATETIME(我假设您使用的是 VARCHAR?)
搜索 extract() 函数。它会解决你的问题。