我在此格式的nchar(255)
数据类型列中有日期
mm/dd/yyyy
现在我想把它改成
dd/mm/yyyy
我不认为CONVERT
帮助我,因为我尝试了不同的查询,如下所示
SELECT CONVERT(NCHAR(20), col1, 103) from table1
SELECT CONVERT(VARCHAR(20), col1, 103) from table1
select Convert(varchar(10),CONVERT(date,col1,101),103) from table1
在我看来,英国格式的103仅从yyyy-mm-dd
所以我尝试CAST
我的col1,但是我收到错误。
我错过了什么吗?有没有简单的方法来做到这一点?
答案 0 :(得分:2)
在两个expiicit步骤中执行此操作。首先,使用101格式(mm / dd / yyyy)将字符串转换为日期。然后使用103(dd / mm / yyyy)将日期显式转换回字符串:
select convert(varchar(255), convert(date, datecol, 101), 103)
两点。首先,我认为结果不必是nvarchar()
(字符串只包含数字和斜杠)。其次,在SQL Server中使用varchar()
时总是包含一个长度。
Here是一个小小的SQL小提琴。
答案 1 :(得分:0)
你可以试试这个:
SELECT CONVERT(VARCHAR, CONVERT(DATETIME, col1, 101), 103)
答案 2 :(得分:0)
检查一下:
Select convert(varchar(15), cast('01/26/2015' as datetime), 103) as FormattedDate
' 01/26/2015' 是 col1
编辑答案:
Select convert(nchar(255), cast(col1 as datetime), 103) as FormattedDate From table1
table1就是你的桌子。
答案 3 :(得分:0)
我正在回答我自己的问题。(以防万一有人想知道什么是解决方案)
我正在使用的查询没有这样的问题。即。
select Convert(varchar(10),CONVERT(date,col1,101),103) from table1
问题在于我的nchar字段。 它在每个条目中都有一个特殊的角色(在我的例子中是一个空格),这个角色给出了超出范围的"尝试转换或转换时出错。
因此删除特殊字符(空格)解决了我的问题。