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

Selecting date in format dd/mm/yyyy from nchar column

我在 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 但我得到一个错误。

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

你可以试试这个:

SELECT CONVERT(VARCHAR, CONVERT(DATETIME, col1, 101), 103)

检查这个:

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 是您的 table。

分两步完成。首先,使用 101 格式(即 mm/dd/yyyy)将字符串转换为日期。然后使用 103(即 dd/mm/yyyy)将日期显式转换回字符串:

select convert(varchar(255), convert(date, datecol, 101), 103)

两点。首先,我认为结果不需要是 nvarchar() (字符串只包含数字和斜线)。其次,在 SQL 服务器中使用 varchar() 时始终包含一个长度。

Here有点SQL Fiddle.

我正在回答我自己的问题。(以防万一有人想知道解决方案是什么)

我使用的查询没有这样的问题。即

select Convert(varchar(10),CONVERT(date,col1,101),103) from table1

问题出在我的 nchar 字段上。 它在每个条目中都有一个特殊字符(在我的例子中是 space),在尝试转换或转换时出现 "out-of-range" 错误。

所以删除特殊字符 (a space) 解决了我的问题。