Множественное условие SQL - PullRequest
0 голосов
/ 04 декабря 2018

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

|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 - это также ввод от пользователя для создания диапазона дат междув период с 1 октября 2018 года по 31 октября 2018 года

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

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

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

Ответы [ 6 ]

0 голосов
/ 04 декабря 2018

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

" SELECT 
        *
    FROM 
        `purchase_table`
    WHERE
        customer_name = '"+customer_name_text+"'
        AND
        (
            purchase_date >= '"+from_date.getDate()+"'
            AND
            purchase_date <= '"+until_date.getDate()+"'
        )
";
0 голосов
/ 04 декабря 2018

Вам необходимо использовать формат даты, подобный этому: «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' ";

0 голосов
/ 04 декабря 2018

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

DATE - формат ГГГГ-ММ-ДД.DATETIME - формат: ГГГГ-ММ-ДД ЧЧ: МИ: СС.SMALLDATETIME - формат: ГГГГ-ММ-ДД ЧЧ: МИ: СС.TIMESTAMP - формат: уникальный номер.

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

0 голосов
/ 04 декабря 2018

да, я предлагаю тоже указать формат даты.Например: to_date ('03 Dec 2018 ',' DD Mon YYYY HH24: mi: ss ')

Выберите * из таблицы покупки, где customer_name =' Sam 'и дату покупки между датой to_date ('01 октября 2018', 'ДД Пн ГГГГ ЧЧ24: мили: сс ') и дата_сообщения (' 31 октября 2018 года ',' Дд Пн ГГГГ ЧЧ24: мили: сс ');

0 голосов
/ 04 декабря 2018

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

"SELECT * FROM purchase_table WHERE customer_name = '"+customer_name_text
+"' AND purchase_date >= '"+from_date.getDate()
+"' AND purchase_date <= '"+until_date.getDate()+"' ";
0 голосов
/ 04 декабря 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' ";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...