Sql 年月日至今
我使用的是SQL Server 2014,我一直在尝试转换:Sql 年月日至今,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我使用的是SQL Server 2014,我一直在尝试转换: 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) 有什么建议吗?试试这个: select convert(varchar(10), SRD.ReceiveDate, 120) 答案
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)
有什么建议吗?试试这个:
select convert(varchar(10), SRD.ReceiveDate, 120)
答案是:
try_convert(date,SRD.ReceiveDate,1)
您引用的格式编号与输入不匹配,以下是相关的数值和日期格式:
1 - mm/dd/yy
101 - mm/dd/yyyy
103 - dd/mm/yyyy
不是作为回答,但是关于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
返回
同意mjsqu的回答 除此之外,要获得更多日期格式选项,并处理输入为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
输出:
这些数据从哪里开始?varchar字段?这也适用于较旧版本的SQL server。以下是MSDN文档。我总是发现它非常有用,因为与各种日期面具有关的魔法数字几乎不可能记住@Xedni看到了我在这里发布的代码片段。我也不能把它们都弄直。很好,这会进入我的工具箱。