首页 > 解决方案 > 如何从 varchar(max) 中的 DD/mm/yyyy 转换为 SQL Server 中的 yyyymmdd 格式

问题描述

DD/mm/yyyy存储在列中的格式日期varchar(max)需要转换为yyyymmdd格式。

不支持以下转换/转换选项。

CONVERT(VARCHAR(19), CONVERT(DATETIME, wfm.date, 3), 112) 

CONVERT(VARCHAR(50), CAST(wfm.date AS DATETIME2), 112) 

CAST(CAST(wfm.date AS DATETIME2(15)) AS DATETIME)

我收到一条CONVERT语法错误消息:

从字符串转换日期和/或时间时转换失败。

对于CAST语法,我收到此错误:

第 1 行:指定的比例 15 无效。'dd/mm/yyyy/ in varchar 要转换为 yyyymmdd 格式

标签: sql-server

解决方案


理想情况下,不要将日期存储为 a varchar,将它们存储为 adate并担心它们在表示层中显示的格式。因此,您应该这样做:

SELECT TRY_CONVERT(date,YourVarcharMAXDate,103);

如果你必须得到格式yyyyMM`` (i don't recommend, change your data type of your column to日期), then you can use a furterhCONVERT`:

SELECT CONVERT(varchar(8),TRY_CONVERT(date,YourVarcharMAXDate,103),112);

如果数据引擎由于格式无效而无法转换日期,TRY_CONVERT将返回NULL; 您需要修复这些值(使它们有效)。为什么不使用 avarchar来存储日期的另一个很好的理由。


推荐阅读