我需要使用“ BETWEEN start AND end
”对日期进行约束,并且我想为开始和结束都设置默认值。我的问题是将默认的开始时间设置为观察的第一个日期。
parser.add_argument('-s','--start_date',type=lambda d: datetime.datetime.strptime(d,'%Y%m%d').date(), help='Date of the beginning of the task', default= None)
parser.add_argument('-e','--end_date',type=lambda d: datetime.datetime.strptime(d,'%Y%m%d').date(), help='Date of the end of the task', default= None)
(...)
query_dates = " AND taskdate BETWEEN '%s' AND '%s';" %(start_date, end_date)
if start_date is None:
start_date = datetime.date.min()
if end_date is None:
end_date = datetime.date.today()
我希望start_date的默认设置是第一次观察。
答案 0 :(得分:0)
我不确定我是否正确阅读了您的问题,但是听起来您在问的是开始日期不受限制的SQL表达式是什么?如果start_date为min(taskdate)
,则可以在BETWEEN
子句中使用表达式None
。那等于最早的开始日期。
希望SQL查询编译器可以对此进行优化,但是构建查询的更有效方法是仅在同时设置了start_date和end_date时才使用BETWEEN
子句。对于只设置了任一侧的情况,可以使用多于或少于运算符的法线。