STR_TO_DATE在SELECT中返回null但在UPDATE中引发错误

时间:2016-09-08 22:39:30

标签: mysql timezone sql-date-functions

我正在尝试将一列中的字符串转换为第二列中的日期。日期有不同的时区,因此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

0 个答案:

没有答案