在java swing表单中未选择日期时显示mysql数据库表中的所有记录

在java swing表单中未选择日期时显示mysql数据库表中的所有记录,java,mysql,swing,Java,Mysql,Swing,我正在为基于桌面的应用程序使用JavaSwing和mysql数据库。 在对报告进行日期筛选时,我有以下查询。 如果我没有在JTextField中输入To_date到From_date,那么它必须显示mysql数据库表中的所有记录,如果我输入了date,那么它必须显示这两个日期之间的记录。 所以我尝试了(日期介于To_date和From_date之间),但它只在我给查询日期时显示记录,否则为空。 您能给我一些建议吗?您可以使用IFNULL()并形成查询,这样,如果您的参数为null,那么您应该使用

我正在为基于桌面的应用程序使用JavaSwing和mysql数据库。 在对报告进行日期筛选时,我有以下查询。 如果我没有在JTextField中输入To_date到From_date,那么它必须显示mysql数据库表中的所有记录,如果我输入了date,那么它必须显示这两个日期之间的记录。 所以我尝试了(日期介于To_date和From_date之间),但它只在我给查询日期时显示记录,否则为空。 您能给我一些建议吗?

您可以使用IFNULL()并形成查询,这样,如果您的参数为null,那么您应该使用列值进行比较。 e、 g


如果date列为null,您应该尝试使用一些静态值。 我希望下面的查询将帮助您解决您的问题

SELECT * FROM YourTable WHERE IFNULL(@StartDateParameter, IFNULL(DateColumn,'1900-01-01')) <= IFNULL(DateColumn,'1900-01-01')
AND IFNULL(@EndDateParameter, IFNULL(DateColumn,'1900-01-01')) >= IFNULL(DateColumn,'1900-01-01')
从表中选择*,其中IFNULL(@StartDateParameter,IFNULL(DateColumn,'1900-01-01'))=IFNULL(DateColumn,'1900-01-01'))

如果您无法通过此查询解决问题,请告知我。

非常感谢您的回复。当我没有传递任何值时,它会显示所有记录,但当我给出日期时,它不会显示这两个日期中的记录。你在吗?我尝试了ifnull(日期,介于到日期和从日期之间的日期)这是正确的方法吗?不,这不是正确的方法。贴了一个以上的答案,检查出来,让我知道,如果它没有帮助,你能解释一下吗?而且它也不起作用。请查看实际查询。按sccode、scname、SUM(stota)、scname=cname和ifnull(@newdate1,ifnull(日期,'1900-01-01'))=ifnull(日期,'1900-01-01')分组的sccode、scname选择sccode、scname、SUM(stota)、copen from sales凭单、CustomerMaster;);您能告诉我您的查询(您在上次评论中提供了)面临什么问题吗?如果您希望我们可以继续讨论。mysql查询在我的java代码中没有显示任何错误,但当我给period时,它也会显示我数据库表中的所有记录好的,如果您认为您的数据库不会在“date”中存储空值“列,然后只需将IFNULL(日期,'1900-01-01')替换为日期。删除所有4个位置的附加IFNULL(日期'1900-01-01')。因此,您的新查询将是-`select sccode,scname,SUM(stota),copen from sales凭单,CustomerMaster其中scname=cname和ifnull(@newdate1,date)=日期组按sccode,scname`您在stackexchange-上有聊天权限吗?或者给我发电子邮件,告诉我你的表格定义和一些记录的完整细节:我的电子邮件是:gmail的nileshthakkar83
SELECT * FROM YourTable WHERE IFNULL(@StartDateParameter, IFNULL(DateColumn,'1900-01-01')) <= IFNULL(DateColumn,'1900-01-01')
AND IFNULL(@EndDateParameter, IFNULL(DateColumn,'1900-01-01')) >= IFNULL(DateColumn,'1900-01-01')