无法执行字符串到日期的转换

时间:2019-12-19 22:31:10

标签: mysql json

任何人都可以指出要阅读的内容,因为我陷入了琐碎的问题。我以JSON格式存储数据,并且我有一个带有字符串的密钥,该字符串包含非ISO格式的日期时间值,例如'%d-%m-%Y %H:%i:%S'

我在字符串“ 17-12-2019 13:49:50”上尝试过函数STR_TO_DATE,它返回了SQL日期时间结果,但是当我在函数中使用它时

DELETE FROM queue WHERE 
    ts = CASE 
    WHEN type = 'entry' THEN HOUR(TIMEDIFF (NOW(), STR_TO_DATE(JSON_EXTRACT(request, "$.date_event"),'%d-%m-%Y %H:%i:%S'))) > 72

SQL引发

  

错误的日期时间值:函数的““ 07-12-2016 18:21:59”“   str_to_date

当我尝试语句SELECT STR_TO_DATE(JSON_EXTRACT(request, "$.date_event"),'%d-%m-%Y %H:%i:%S')时MySQL返回null

1 个答案:

答案 0 :(得分:4)

您的问题是由提取值周围的双引号引起的。您需要取消对提取值的引用,例如

JSON_UNQUOTE(JSON_EXTRACT(request, "$.date_event"))

或使用速记符号

request->>'$.date_event'

或将双引号添加到STR_TO_DATE模板中,即

STR_TO_DATE(JSON_EXTRACT(request, "$.date_event"),'"%d-%m-%Y %H:%i:%S"'))

Demo on dbfiddle