【发布时间】:2020-04-15 11:07:42
【问题描述】:
我使用的是 SQL Server 2014。我有一个日期存储为 varchar(MAX),格式为:
2019-02-18
但是,我想要英国格式 dd/mm/yyyy (103)。
这是我的 SQL:
SELECT CONVERT(DATE, DateField, 103) AS "JobStartDate"
FROM tblTest
但是,我不断收到此错误:
从字符串转换日期和/或时间时转换失败。
我错过了什么?
更新:日期最初存储为 varchar max,因为它来自第 3 方系统。我无法控制这一点,我完全理解这是错误的格式,但这是我得到的。
【问题讨论】:
-
select CONVERT(VARCHAR(10), cast(DateField as date), 103) AS "JobStartDate" from tblTest, docs.microsoft.com/en-us/sql/t-sql/functions/… -
你为什么要将日期存储为
varchar,以及为什么你“需要”2GB的字符来存储日期?此外,yyyy-MM-dd格式与date数据类型是明确的。但是,您提供的样式代码的格式为 `dd/MM/yyyy;因为这就是它失败的原因。修正你的数据类型,修正问题。 -
请检查您的数据。该代码将用于将 nvarchar 转换为日期时间。也许您至少有一条日期时间格式的记录
-
@MahdiRahimi 当 OP 告诉 SQL Server 日期格式为
dd/MM/yyyy时,它将不起作用。'2019-02-18'的格式是yyyy-MM-dd,所以当然会失败。 -
@MahdiRahimi
'10/10/2012'的格式为dd/MM/yyyy或MM/dd/yyyy(不可能知道)不是yyyy-MM-dd。这是不一样的。试试 OP 有什么,SELECT CONVERT(DATE, '2019-02-18', 103) AS "JobStartDate";你会看到它不起作用。
标签: sql-server tsql date type-conversion