0

使用 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...

任何人都可以给我一个想法或查询帮助....

4

4 回答 4

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
于 2012-06-02T07:39:31.190 回答
1
SELECT CAST(datepart(month,getdate()) AS CHAR)  + '/' + CAST(datepart(year,getdate()) AS CHAR)

您需要日期字段,而不是函数 getdate()。

于 2012-06-02T07:37:36.933 回答
0

看看 SUBSTRING 函数http://msdn.microsoft.com/en-us/library/ms187748.aspx

您还应该考虑将日期存储为 DATETIME(我假设您使用的是 VARCHAR?)

于 2012-06-02T07:40:16.027 回答
0

搜索 extract() 函数。它会解决你的问题。

于 2012-06-02T07:41:52.523 回答