Текст типа данных поля даты в базе данных

#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 извлекает и отображает значения ДАТЫ в формате ‘ГГГГ-ММ-ДД’.

Я бы предложил попробовать этот формат.

Существует также отработанный пример, в котором переменные используются в запросах даты на :

TutorialsPoint