任何人都可以指出要阅读的内容,因为我陷入了琐碎的问题。我以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
答案 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"'))