按日期范围搜索多列

时间:2015-01-28 00:13:04

标签: mysql date search

我有一个包含4列的表 - 所有日期。例如,保险政策:您在这一年中有4个付款日期 - 2015-02-01,2015-05-01,2015-08-01,2015-11-01。
如何在日期期间进行搜索?让我们说我有大量的数据和许多有4个日期的政策。我想从2015-03-01到2015-03-31进行搜索,我希望看到此期间的所有待处理付款。 我无法使其适用于多个列或按确切日期进行搜索。

这是一个测试模板。我想制作一个宏来做到这一点: 你想要搜索什么:从下拉菜单中选择 - 付款或结束日期 如果选择了结束日期 - 仅在G中查看,如果选择了付款 - 请查看H,J和L. 输入搜索日期:至: 选择一个日期 按钮单击 - 查看回答我的搜索参数的结果。 我不知道该怎么做?! :( http://dox.bg/files/dw?a=b99921ddc1

3 个答案:

答案 0 :(得分:1)

确保列的数据类型为日期类型 试试这个:

SELECT * from tablename   
WHERE date_column >= '01-03-2015'   
AND date_column <= '31-03-215'
;   

你也可以尝试这个

SELECT * from tablename   
WHERE cast(date_column as date) >= '01-03-2015'   
AND cast(date_column as date) <= '31-03-215'
;

可以与4个日期进行比较:

SELECT * from tablename   
WHERE ((date_column >= '01-03-2015')   
AND (date_column <= '31-03-215'))
OR ((date_column >= '01-05-2015')
AND (date_column <= '31-05-2015'))
;

答案 1 :(得分:0)

让我们说你的四列是col1,col2 ...... 让我们也说你正在寻找2014年1月1日至2014年1月31日

select * from [tablename] 
where col1>01/01/2014 
   or col1<01/31/2014 
   or col2>01/01/2014 
   or col2<01/31/2014 
   or col3>01/01/2014 
   or col3<01/31/2014 
   or col4>01/01/2014 
   or col4<01/31/2014

希望这有帮助

答案 2 :(得分:0)

我认为你想要一个OR条件。

假设你有一个适用于一列的谓词(如果不是这样的话,你需要显示到目前为止的内容,日期的格式是奇数,使它看起来像你可能将这些值存储为VARCHAR而不是DATE。)

但假设您有一个可用于其中一列的谓词,例如

SELECT ...
  FROM ... t
 WHERE t.payment1_date_col  is in specified range

然后,您可以在另一列上重复相同的谓词,并使用布尔OR运算符组合谓词。

SELECT ...
  FROM ... t
 WHERE t.payment1_date_col  is in specified range
    OR t.payment2_date_col  is in specified range
    OR t.payment3_date_col  is in specified range
    OR t.payment4_date_col  is in specified range

如果四列中的任何一列在指定范围内,则返回该行。

就检查日期值是否在某个范围内的实际情况而言,如果列是数据类型DATE,则可以使用如下查询:

SELECT ...
  FROM ... t
 WHERE t.payment1_date_col BETWEEN '2015-03-01' AND '2015-03-31'
    OR t.payment2_date_col BETWEEN '2015-03-01' AND '2015-03-31'
    OR t.payment3_date_col BETWEEN '2015-03-01' AND '2015-03-31'
    OR t.payment4_date_col BETWEEN '2015-03-01' AND '2015-03-31'