更多日期格式转换SQL

时间:2019-02-28 06:54:37

标签: sql sql-server

嗨,我正在使用SQL 2014,我需要转换以下2种日期格式:

12/31/18 - Varchar 
12/31/2018 - Varchar

此格式为最终格式

December 31,2018 Varchar

我知道使用varchar是不正确的。 有什么建议吗?

2 个答案:

答案 0 :(得分:6)

尝试使用:

DECLARE @f varchar(50) = '12/31/18'
SELECT FORMAT(CAST(@f AS DATETIME), N'MMMM dd, yyyy')

输出:

December 31, 2018

还有第二个变体:

DECLARE @f varchar(50) = '12/31/2018'
SELECT FORMAT(CAST(@f AS DATETIME), N'MMMM dd, yyyy')

输出:

December 31, 2018

答案 1 :(得分:2)

您也可以使用

尝试以下查询
create table DateValue (DateVal varchar(10))
insert into DateValue values
('12/31/18'),
('12/31/2018'),
('01/31/18'),
('01/31/2018')

Select 
    DateName( month , DateAdd( month , DATEPART(MONTH, DateVal) , 0 ) - 1 ) + ' ' +
    Cast(DATEPART(dd, DateVal) as Varchar)  + ', ' +
    + Cast (DATEPART(YYYY, DateVal) as Varchar) as VarcharDate
from DateValue

输出将如下所示。

VarcharDate
----------------
December 31, 2018
December 31, 2018
January 31, 2018
January 31, 2018

此查询还将在较低版本的SQL Server中运行,其中format()不可用。

Live Demo