我正在尝试将一列中的字符串转换为第二列中的日期。日期有不同的时区,因此STR_TO_DATE
函数会稍微窒息。
createdTime : Thu Oct 08 09:28:18 MDT 2009
我可以成功运行此语句以获取MDT日期的解析日期和其他日期的null
:
select createdTime, str_to_date(createdTime, '%a %b %d %T MDT %Y') from myTable
如果您将日期字符串中的文字MDT
更改为MST
,则可以获取MST时区的所有记录。我成功地运行了这个。
然而,当我尝试在STR_TO_DATE
中使用相同的UPDATE
函数时,它会窒息:
update myTable
set realCreatedDate = str_to_date(createdTime, '%a %b %d %T MDT %Y')
Error Code: 1411. Incorrect datetime value: 'Fri Nov 06 08:48:27 MST 2009' for function str_to_date
为什么STR_TO_DATE
函数会在UPDATE
语句中抛出错误,而不是像null
中那样只返回SELECT
?
修改
为了澄清问题,这个带有来自错误时区的字符串文字的SELECT
语句返回null
:
select str_to_date('Thu Oct 08 09:28:18 MST 2009', '%a %b %d %T MDT %Y')
虽然此UPDATE
语句会抛出Error Code: 1411
:
update myTable
set realCreatedDate = str_to_date('Thu Oct 08 09:28:18 MST 2009', '%a %b %d %T MDT %Y')
我试图弄清楚为什么STR_TO_DATE
中的UPDATE
函数会抛出错误,即使SELECT
中的相同函数只返回null