如何将 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.
我在编写 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.