获取日期记录 - 在某些情况下没有结束日期

时间:2017-01-08 13:42:22

标签: sql date between

数据库结构如下。

-----------------------------------
| product | start_year | end_year |
-----------------------------------
| prod_1  |    2001    |   2005   |
| prod_2  |    2002    |   2010   |
| prod_3  |    2003    |          |
| prod_4  |    2004    |   2016   |
| prod_5  |    2005    |          |
| prod_6  |    2005    |   2015   |
-----------------------------------

某些字段" end_year"为空,空白单元格表示当前年份。 我有一个参数年份,我希望收到年份介于两个日期(start_year和end_year)之间的记录。

我可以使用此查询,但遗憾的是空单元格存在问题:

select * from table where 2003 between start_year and end_year;

3 个答案:

答案 0 :(得分:1)

我想你想获得start_date和end_date之间的年份行。

假设start_year小于给定年份,则应该包含它,您可以像这样使用coalesce

Thread

答案 1 :(得分:0)

您的意思是您希望结束数据列的记录没有值,并将日期作为值开始。

 SELECT  product FROM table WHERE start_year='2003' and(end_year  IS NULL OR end_year = '');

答案 2 :(得分:0)

您可以检查start_year是否大于或等于searchyear并检查end_year是否小于或等于searchyear或者end_year是{{1 }}

NULL