如何将 nvarchar(255) 格式转换为 YYYY-MM-DD 格式?

How to convert a nvarchar(255) to YYYY-MM-DD format?

我在编写 SQL 语句以将 nvarchar(255) 类型的日期列转换为日期类型 'yyyy-mm-dd' 格式

时需要帮助

我尝试了 Whosebug 中与此主题相关的所有可用替代方案,但找不到适合我的数据集的解决方案。

样本数据:

Fri, 23 Oct, 2020
Mon, 19 Oct, 2020
Fri, 16 Oct, 2020
Tue, 20 Oct, 2020
Tue, 27 Oct, 2020

截止日期格式:

2020-Oct-23
2020-Oct-19
2020-Oct-16
2020-Oct-20
2020-Oct-27

我正在使用 SQL 服务器 2014。

SQL 服务器作为将字符串转换为日期的非常灵活的默认规则。但是,它不识别星期几。所以,如果你删除它,就很容易了:

select convert(date, stuff('Fri, 23 Oct, 2020', 1, 5, ''))

或引用专栏:

select convert(date, stuff(datecol, 1, 5, ''))

这会生成一个 date,然后您可以使用 format()convert() 对其进行格式化。但是,我建议将格式保留为 YYYY-MM-DD。这适用于范围比较和 ORDER BY。而且您确实希望将日期表示为日期。

Here 是一个 db<>fiddle.