sql-server - 如何从 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 格式
解决方案
理想情况下,不要将日期存储为 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 furterh
CONVERT`:
SELECT CONVERT(varchar(8),TRY_CONVERT(date,YourVarcharMAXDate,103),112);
如果数据引擎由于格式无效而无法转换日期,TRY_CONVERT
将返回NULL
; 您需要修复这些值(使它们有效)。为什么不使用 avarchar
来存储日期的另一个很好的理由。
推荐阅读
- javascript - 在 react 的 setState 中传播
- android - ANDROID FIRESTORE :获取子集合中包含“当前用户”的所有文档
- python - 想在情节中一次显示所有元素,但这不是
- ios - Earlgrey 在访问 NavBar/TabBar 项时速度很慢
- python - PySide2 将鼠标事件传递给系统
- ios - 在应用程序中返回bool值的目的是什么(_应用程序:UIApplication,打开url:URL,sourceApplication:String?,注释:Any)
- javascript - 返回异步数据,然后在 Node.js 中同步导出
- regex - 带有连字符的模式的正则表达式
- google-ads-api - 如何查看应用程序中是否设置了谷歌广告?
- azure-sql-database - 如何在 SSMS 中查看 Azure 表数据