#mysql #sql
#mysql #sql
Вопрос:
Я хочу извлекать данные из двух диапазонов, но в поле даты моей базы данных в виде текста. Как теперь извлекать данные из двух диапазонов
$startdate = 01-01-2020
$enddate = 31-12-2020
и имя поля моей базы данных ДАТА в виде текстового типа данных (формат 01-12-2019)
Ниже приведен запрос, который я использую
SELECT m.id, m.centers, c.BUDGET_ANNUAL_AMOUNT
FROM Cost_centers m INNER JOIN ANNUAL_BUDGET_BUDGET_CENTER c
ON c.BUDGET_ID = 25
where (START_DATE BETWEEN '$startdate' AND '$enddate')
ORDER BY ID DESC
Пожалуйста, помогите, как получить данные с текстовым типом данных с диапазоном. Как преобразовать текст в данные.
Пожалуйста, помогите мне
Комментарии:
1. Используйте
YYYY-MM-DD
формат для ваших литералов даты.
Ответ №1:
вы пробовали использовать функцию STR_TO_DATE(), доступную в mysql? Я думаю, что должно сработать что-то вроде приведенного ниже.
SELECT m.id, m.centers, c.BUDGET_ANNUAL_AMOUNT
FROM Cost_centers m INNER JOIN ANNUAL_BUDGET_BUDGET_CENTER c
ON c.BUDGET_ID = 25
where (STR_TO_DATE(START_DATE, "%d-%m-%Y") BETWEEN '$startdate' AND '$enddate')
ORDER BY ID DESC
Комментарии:
1. Привет, я дважды проверил запрос, и он действительно дает желаемый результат. Можете ли вы попробовать поместить
startdate
иenddate
вyyyy-mm-dd
формат.
Ответ №2:
В соответствии с моей ссылкой на SQL — типы ДАТЫ, ДАТЫ и времени
MySQL извлекает и отображает значения ДАТЫ в формате ‘ГГГГ-ММ-ДД’.
Я бы предложил попробовать этот формат.
Существует также отработанный пример, в котором переменные используются в запросах даты на :