我有一个包含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
答案 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'