从nchar列中选择格式为dd / mm / yyyy的日期

时间:2015-01-01 13:48:35

标签: sql sql-server tsql date

我在此格式的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,但是我收到错误。

我错过了什么吗?有没有简单的方法来做到这一点?

4 个答案:

答案 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字段。 它在每个条目中都有一个特殊的角色(在我的例子中是一个空格),这个角色给出了超出范围的"尝试转换或转换时出错。

因此删除特殊字符(空格)解决了我的问题。