Множественное условие SQL

У меня есть таблица, в которой сохраняются дата покупки и имя клиента, которые выглядят примерно так:

|Name   | Item | Purchase Date |
|Sam    |Soap  | 03-09-2018    |
|Edwin  |Coffee| 28-08-2018    |
|Gary   |Tea   | 24-09-2018    |
|Sam    |Milk  | 09-10-2018    |
|Tiffany|Sugar | 17-10-2018    |
|Sam    |Cocoa | 30-10-2018    |

Например, я хочу получить такой вывод:

|Sam    |Milk  | 09-10-2018    |
|Sam    |Cocoa | 30-10-2018    |

поэтому код должен быть таким:

"Select * from purchase_table where customer_name =
'"+customer_name_text+"' AND purchase_date BETWEEN 
'"+from_date.getDate()+"' AND 
'"+until_date.getDate()+"' ";

где customer_name_text - это входные данные пользователя для поиска конкретного имени клиента, from_date также входные данные пользователя для создания диапазона дат между until_date jDateChooser, дата между 1 октября 2018 г. по 31 октября 2018 г.

но вместо вывода, как указано выше, вывод кажется неправильным, это будет примерно так:

|Sam    |Soap  | 03-09-2018    |
|Sam    |Milk  | 09-10-2018    |
|Sam    |Cocoa | 30-10-2018    |

любое предложение будет принято

Проверьте правильность настройки from_date с помощью jDateChooser? Если да, также запустите запрос, используя подготовленные операторы, например select * from purchase_table where customer_name = ? AND purchase_date BETWEEN ? AND ?. Не рекомендуется использовать конкатенацию строк.

isuru89 04.12.2018 06:22
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
70
6

Ответы 6

Вам необходимо использовать такой формат даты, как '2012-10-01 00:00:00' (ГГГГ-ММ-ДД ЧЧ: мм: СС)
см. образец ниже,

"Select * from purchase_table where customer_name =
'sam' AND purchase_date BETWEEN 
'2012-10-01 00:00:00' AND 
'2012-10-31 00:00:00' ";

попробую позже, потому что я уже сохранил дату в формате «дд-ММ-гггг», я думаю, мне нужна новая база данных, сохраненная в формате «ГГГГ-ММ-ДД ЧЧ: мм: СС», как вы сказали ранее

Jokurilisme 04.12.2018 06:50

Вы можете использовать следующий запрос:

"SELECT * FROM purchase_table WHERE customer_name = '"+customer_name_text
+"' AND purchase_date >= '"+from_date.getDate()
+"' AND purchase_date <= '"+until_date.getDate()+"' ";

спасибо за ваше предложение, попробовал ваш код и все еще имеет ту же проблему

Jokurilisme 04.12.2018 06:45

да, я тоже предлагаю указать формат даты. Например: to_date ('03 дек 2018 ',' ДД Пн ГГГГ ЧЧ24: mi: ss ')

Выберите * из Purchase_table где customer_name = 'Сэм' и датой покупки между to_date ('01 октября 2018 г. ',' ДД Пн ГГГГ ЧЧ24: mi: ss ') до to_date ('31 октября 2018 г.', 'ДД Пн ГГГГ ЧЧ24: mi: ss');

попробую позже, потому что я уже сохранил дату в формате «дд-ММ-гггг», я думаю, мне нужна новая база данных, сохраненная в формате «ДД Пн ГГГГ ЧЧ24: mi: ss», как вы сказали ранее

Jokurilisme 04.12.2018 06:50

Я предлагаю вам проверить формат даты по умолчанию в базе данных SQL. глухой формат sql:

ДАТА - формат ГГГГ-ММ-ДД. ДАТАВРЕМЯ - формат: ГГГГ-ММ-ДД ЧЧ: МИ: СС. SMALLDATETIME - формат: ГГГГ-ММ-ДД ЧЧ: МИ: СС. TIMESTAMP - формат: уникальный номер.

вы также можете изменить формат даты или передать дату в формате даты по умолчанию

Вам необходимо использовать такой формат даты, как '2012-10-01 00:00:00' (ГГГГ-ММ-ДД ЧЧ: мм: СС)

см. образец ниже,

Потому что SQL принимает только такой формат даты: (ГГГГ-ММ-ДД ЧЧ: мм: СС)

1) Примите дату от пользователя, затем напишите функцию для структурирования даты, как указано выше, используя функцию getDate().

"Select * from purchase_table where customer_name = 'sam' AND purchase_date BETWEEN '2012-10-01 00:00:00' AND '2012-10-31 00:00:00' ";

Попробуйте выполнить ниже SQL-запрос, чтобы получить данные в пределах диапазона дат:

" SELECT 
        *
    FROM 
        `purchase_table`
    WHERE
        customer_name = '"+customer_name_text+"'
        AND
        (
            purchase_date >= '"+from_date.getDate()+"'
            AND
            purchase_date <= '"+until_date.getDate()+"'
        )
";

спасибо за предложение, по-прежнему не работает с вашим кодом. возможно, есть ошибка вне запроса, вероятно, проверим это позже

Jokurilisme 05.12.2018 06:45

@Jokurilisme, правильно ли размещены в запросе динамические значения из переменных [customer_name_text, from_date.getDate (), until_date.getDate ()]? проверьте sql-запрос для этих значений, если все значения размещены правильно, тогда SQL-запрос будет работать правильно .... для тестирования вы можете проверить запрос с фиксированными значениями, чтобы убедиться, что запрос возвращает правильный результат или нет.

Manoj Singh 05.12.2018 07:12

Другие вопросы по теме