将VARCHAR值转换为格式化的日期,忽略错误
将VARCHAR值转换为格式化的日期,忽略错误
我有一列包含日期的数据,格式为yyyy-mm-dd
。现在我正在运行一个SELECT
查询,将该日期转换为dd/mm/yyyy
,使用TO_CHAR(dob :: DATE, 'dd/mm/yyyy') AS dob
,这个方法运行得很好。现在我遇到的问题是,该列中有一些错误的记录,下面是一个示例表,包含一个正确记录和一个错误记录:
| id | dob |
|----|------------|
| 1 | 2019-12-31 | // 正确记录,返回31/12/2019
| 2 | 31-12-2019 | // 错误记录,返回错误
|----|------------|
在id为2的记录上我得到了以下错误:
ERROR: date/time field value out of range: "31-12-2019" HINT: Perhaps you need a different "datestyle" setting. SQL state: 22008
我想要的是有条件地检查TO_CHAR(dob :: DATE, 'dd/mm/yyyy')
是否正确,如果不正确则直接使用dob,不进行转换。有什么方法可以实现吗?
我使用的是Postges 12