SQL多重条件

时间:2018-12-04 05:13:53

标签: java mysql sql database netbeans

我有一个表格,用于保存购买日期和客户姓名,如下所示:

|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也是用户输入的输入,以在untry_date jDateChooser之间进行范围日期,该日期介于2018年10月1日至2018年10月31日之间。

但是上面的输出相反,输出似乎是错误的,就像这样:

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

任何建议都会被接受

6 个答案:

答案 0 :(得分:0)

您需要使用类似“ 2012-10-01 00:00:00”这样的日期格式(YYYY-MM-DD HH:mm:SS)
参见下面的示例,

"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' ";

答案 1 :(得分:0)

您可以使用以下查询:

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

答案 2 :(得分:0)

是的,我也建议给日期指定格式。例如: to_date('2018年12月3日','DD Mon YYYY HH24:mi:ss')

从购买表中选择* 其中customer_name ='Sam' 和to_date('2018年10月1日','DD Mon YYYY HH24:mi:ss')和to_date('31 Oct 2018','DD Mon YYYY HH24:mi:ss')之间的采购日期;

答案 3 :(得分:0)

我建议您检查SQL数据库中的默认日期格式 sql的默认格式为:

DATE-格式为YYYY-MM-DD。 DATETIME-格式:YYYY-MM-DD HH:MI:SS。 SMALLDATETIME-格式:YYYY-MM-DD HH:MI:SS。 TIMESTAMP-格式:唯一编号。

您还可以更改日期格式或以默认日期格式传递日期

答案 4 :(得分:0)

您需要使用“ 2012-10-01 00:00:00”这样的日期格式(YYYY-MM-DD HH:mm:SS)

请参见下面的示例

因为,SQL只接受这样的日期格式:(YYYY-MM-DD HH:mm:SS)

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' ";

答案 5 :(得分:0)

尝试以下SQL查询以获取日期范围内的数据:

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