如何在 SQL Server 中将字符串转换为日期?

Shi*_*ngh 1 sql database sql-server

我的表中有日期列作为字符串类型示例Feb-18。如何将其更改为日期类型01-02-2018

Yog*_*rma 6

使用convert()与添加一个天:

select convert(date, '01-' + 'Feb-18')
Run Code Online (Sandbox Code Playgroud)


Gor*_*off 5

SQL Server 非常擅长计算日期。但是你需要一天,所以:

select convert(date, '01-' + datecol)
Run Code Online (Sandbox Code Playgroud)

注意:您应该非常小心地将日期存储为字符串。我建议您测试转换以确保它适用于所有值:

select datecol
from t
where try_convert(date, '01-' + datecol) is null and
      datecol is not null;
Run Code Online (Sandbox Code Playgroud)

如果这返回任何行,那么您的数据中有错误的日期。哦,首先通过拒绝insert/ updates来捕获这些会更好。但是,您也许能够弄清楚如何修复它们。