将yyyymmdd varchar列格式化为SQL中的月,日年

时间:2015-11-19 15:13:01

标签: sql sql-server datetime

我有一个简单的查询,如下所示。我正在尝试将列yyyymmdd格式化为Month,Day,Year格式。怎么办呢?

yyyymmdd返回2015-11-13 00:00:00.000             我希望它能在2015年11月13日返回

SELECT
      CONVERT(datetime, yyyymmdd, 101)  as 'Date of Data',

        cd.[text] as 'Last POS Upload Time Each Day'

FROM MyTable CD 
  WHERE     CD.[Store] = @Store
        AND YYYYMMDD between @Beginning_Date AND @Ending_Date
        AND [text] <> '' 

group by  cd.[Store], [text], cd.[yyyymmdd]
order by  cd.[store], cd.[yyyymmdd], [text]

4 个答案:

答案 0 :(得分:1)

可能有内置功能可以准确返回您正在寻找的内容,但您始终可以选择自行滚动...

SELECT
        DATENAME(month, yyyymmdd) + ' ' +
        CONVERT(nvarchar(50), DATEPART(day, yyyymmdd)) + ', ' + 
        CONVERT(nvarchar(50), DATEPART(Year, yyyymmdd)) AS [Your Date In Your Format],
...rest of your query

这里是proof of concept sqlfiddle

答案 1 :(得分:0)

你可以试试这个

SELECT DATENAME(MM, yyyymmdd) + RIGHT(CONVERT(VARCHAR(12), yyyymmdd, 107), 9) AS 'Date of Data',

答案 2 :(得分:0)

<强> Sql Fiddle Demo

CREATE TABLE Table1
    ([MyDate] datetime);

INSERT INTO Table1
    ([MyDate])
VALUES
    ('2015-11-13 00:00:00');

SELECT DATENAME(MM, MyDate) + RIGHT(CONVERT(VARCHAR(12), MyDate, 107), 9) AS [Month DD, YYYY]
FROM Table1

答案 3 :(得分:0)

试试这个:

 SELECT 
      DATENAME(MM, '2015-11-13 00:00:00.000')
      + ' '  + RIGHT(CONVERT(VARCHAR(10), '2015-11-13 00:00:00.000', 107), 2)
      + ', ' + RIGHT(CONVERT(VARCHAR(4) , '2015-11-13 00:00:00.000', 107), 9) AS 'FormattedDate'

如果您有任何疑问,请与我联系。