У меня есть таблица, в которой сохраняются дата покупки и имя клиента, которые выглядят примерно так:
|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 |
любое предложение будет принято




Вам необходимо использовать такой формат даты, как '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' ";
попробую позже, потому что я уже сохранил дату в формате «дд-ММ-гггг», я думаю, мне нужна новая база данных, сохраненная в формате «ГГГГ-ММ-ДД ЧЧ: мм: СС», как вы сказали ранее
Вы можете использовать следующий запрос:
"SELECT * FROM purchase_table WHERE customer_name = '"+customer_name_text
+"' AND purchase_date >= '"+from_date.getDate()
+"' AND purchase_date <= '"+until_date.getDate()+"' ";
спасибо за ваше предложение, попробовал ваш код и все еще имеет ту же проблему
да, я тоже предлагаю указать формат даты. Например: 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», как вы сказали ранее
Я предлагаю вам проверить формат даты по умолчанию в базе данных 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, правильно ли размещены в запросе динамические значения из переменных [customer_name_text, from_date.getDate (), until_date.getDate ()]? проверьте sql-запрос для этих значений, если все значения размещены правильно, тогда SQL-запрос будет работать правильно .... для тестирования вы можете проверить запрос с фиксированными значениями, чтобы убедиться, что запрос возвращает правильный результат или нет.
Проверьте правильность настройки
from_dateс помощью jDateChooser? Если да, также запустите запрос, используя подготовленные операторы, напримерselect * from purchase_table where customer_name = ? AND purchase_date BETWEEN ? AND ?. Не рекомендуется использовать конкатенацию строк.