2017-07-25 77 views
2

我使用SQL Server 2014和我一直在试图将此转换:MM/DD/YY TO DATE

ReceiveDate 
07/01/15 
07/02/15 

成这样:

ReceiveDate 
2015-07-01 
2015-07-02 

我曾尝试用:

try_convert(date,SRD.ReceiveDate,103) 
try_convert(date,SRD.ReceiveDate,101) 

有什么建议吗?

+0

这个数据从哪里开始?一个varchar字段? – arcee123

回答

3

试试这个:

select convert(varchar(10), SRD.ReceiveDate, 120) 
+0

这也适用于旧版本的SQL服务器。 – Chuck

+2

这里也是MSDN文档。我总是发现它非常有用,因为与各种日期面具相关的魔术数字几乎不可能记住。 https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql – Xedni

+0

@Xedni请看我在这里发布的代码片段。我也无法让他们全部直接。 –

1

答案是:

try_convert(date,SRD.ReceiveDate,1) 

你引用的不匹配输入格式号,这里是相关数值和日期格式:

1 - mm/dd/yy 
101 - mm/dd/yyyy 
103 - dd/mm/yyyy 
0

不打算回答,但是,摹Xedni的评论,这是一个小东西,我用:

------ Convert Dates 
;with cte as (
    Select Conv = N 
      ,AsDateTime = try_convert(nvarchar(30),GetDate(),N) 
      ,AsDate  = try_convert(nvarchar(30),convert(date,GetDate()),N) 
      ,AsTime  = try_convert(nvarchar(30),convert(time,GetDate()),N) 
    From (Select Top 200 N=Row_Number() Over (Order By (Select NULL)) From master..spt_values) N 
) 
Select * 
From cte 
Where AsDateTime is not null 
    or AsDate  is not null 
    or AsTime  is not null 

返回

enter image description here

+0

不错,这是我的工具箱。 – jac

0

与mjsqu答案同意。

除此之外,更多的date-format选择和应对可能出现的输入格式问题(如果输入为varchar),你也可以尝试这样的:

DECLARE @dateValue VARCHAR(20)='07/01/15' 

SELECT TRY_CONVERT(DATE, @dateValue, 1) DateValueConvert; 

SELECT TRY_PARSE(@dateValue AS DATE USING 'en-us') DateValueUS 

SELECT TRY_PARSE(@dateValue AS DATE USING 'en-gb') DateValueGB 

与输出:

enter image description here

相关问题