В чём ошибка sql запроса?

159
20 июня 2022, 11:50

Хочу из БД вытащить инфу по датам, но возвращается Warning: #1411 Incorrect datetime value

select GT.NAME as АЙДИ,
       TT.PROPERTY_54 as Состав,
       TT.PROPERTY_44 as Стоимость,
       TT.PROPERTY_47 as СтоимостьДоставки,
       TT.PROPERTY_73 as ДатаДоставки,
       TT.PROPERTY_74 as ВремяДоставки,
       TT.PROPERTY_60 as ИмяПокупателя,
       TT.PROPERTY_67 as ИмяПолучателя,
       TT.PROPERTY_61 as ТелефонПокупателя,
       TT.PROPERTY_69 as НомерПолучателя,
       TT.PROPERTY_62 as Email,
       TT.PROPERTY_71 as АдресДоставки,
       TT.PROPERTY_75 as ВремяДоставки
from b_iblock_element_prop_s10 as TT
left join b_iblock_element as GT ON GT.ID = TT.PROPERTY_53
where TT.PROPERTY_59 BETWEEN STR_TO_DATE('‎2020-05-12 00:00:00', '%Y-%m-%d %H:%i:%s') 
  AND STR_TO_DATE('‎2020-11-12 23:59:59', '%Y-%m-%d %H:%i:%s')

Подскажите, пожалуйста

Answer 1

Вот что нашёл на английской ветке

SELECT STR_TO_DATE("'2015-05-15 15:57:46'", "'%Y-%m-%d %H:%i:%s'") Your current statement is the following, and since the pattern doesn't match you are >getting NULL:

SELECT STR_TO_DATE("'2015-05-15 15:57:46'", '%Y-%m-%d %H:%i:%s')

Похоже просто забыли доставить кавычки "" Перевод на вскидку такой: "Ваш текущий оператор следующий, и поскольку шаблон не соответствует, вы получаете NULL"

Answer 2

В ваших датах присутствуют непечатные символы:

$ hexdump -C <<< '‎2020-05-12 00:00:00'
00000000  e2 80 8e 32 30 32 30 2d  30 35 2d 31 32 20 30 30  |...2020-05-12 00|
00000010  3a 30 30 3a 30 30 0a                              |:00:00.|

Избавьтесь от них и всё станёт ок: SQLFiddle

Answer 3

Конвертация STR_TO_DATE совершенно излишня. MySQL отлично сравинивает даты со строками:

select GT.NAME as АЙДИ,
       TT.PROPERTY_54 as Состав,
       TT.PROPERTY_44 as Стоимость,
       TT.PROPERTY_47 as СтоимостьДоставки,
       TT.PROPERTY_73 as ДатаДоставки,
       TT.PROPERTY_74 as ВремяДоставки,
       TT.PROPERTY_60 as ИмяПокупателя,
       TT.PROPERTY_67 as ИмяПолучателя,
       TT.PROPERTY_61 as ТелефонПокупателя,
       TT.PROPERTY_69 as НомерПолучателя,
       TT.PROPERTY_62 as Email,
       TT.PROPERTY_71 as АдресДоставки,
       TT.PROPERTY_75 as ВремяДоставки
from b_iblock_element_prop_s10 as TT
left join b_iblock_element as GT ON GT.ID = TT.PROPERTY_53
where TT.PROPERTY_59 BETWEEN '‎2020-05-12 00:00:00' AND '‎2020-11-12 23:59:59'

;

READ ALSO
Деплой телеграм бота на питоне

Деплой телеграм бота на питоне

У меня есть телеграм бот написанный на питонеБот работает с базой данных

172
с++ работа regex_search

с++ работа regex_search

Есть следующий код, занимающийся поиском элементов в строкеПочему-то ф-ия regex_search выдает ошибку в заданных элементах, конкретно в string переменной...

193
Проблема с нахождением первого цифрового слова С++

Проблема с нахождением первого цифрового слова С++

Программа должна удалять каждое четное слово, дублировать каждое нечетное слово, заменять все вхождения букв 'д ' на 'т' и найти первое цифровое...

147
Освобождение загруженного ресурса

Освобождение загруженного ресурса

Есть консольная программа с бинарными ресурсами (Windows)Нашел, как загружать, записывать в файл и так далее -

156