From 97e18c809e966c76fde9ed3640335b433a29a4c6 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Thu, 18 Jan 2018 15:39:12 +0530 Subject: [PATCH] [Fix] Date between filter not working properly on report and listview (#4810) --- frappe/model/db_query.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index 6e558b87dd..5349823a2c 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -308,7 +308,7 @@ class DatabaseQuery(object): if f.operator.lower() == 'between' and \ (f.fieldname in ('creation', 'modified') or (df and (df.fieldtype=="Date" or df.fieldtype=="Datetime"))): - value = get_between_date_filter(f.value) + value = get_between_date_filter(f.value, df) fallback = "'0000-00-00 00:00:00'" elif df and df.fieldtype=="Date": @@ -584,20 +584,27 @@ def is_parent_only_filter(doctype, filters): return only_parent_doctype -def get_between_date_filter(value): +def get_between_date_filter(value, df=None): ''' return the formattted date as per the given example [u'2017-11-01', u'2017-11-03'] => '2017-11-01 00:00:00.000000' AND '2017-11-04 00:00:00.000000' ''' from_date = None to_date = None + date_format = "%Y-%m-%d %H:%M:%S.%f" + + if df: + date_format = "%Y-%m-%d %H:%M:%S.%f" if df.fieldtype == 'Datetime' else "%Y-%m-%d" if value and isinstance(value, (list, tuple)): if len(value) >= 1: from_date = value[0] if len(value) >= 2: to_date = value[1] + if not df or (df and df.fieldtype == 'Datetime'): + to_date = add_to_date(to_date,days=1) + data = "'%s' AND '%s'" % ( - get_datetime(from_date).strftime("%Y-%m-%d %H:%M:%S.%f"), - add_to_date(get_datetime(to_date),days=1).strftime("%Y-%m-%d %H:%M:%S.%f")) + get_datetime(from_date).strftime(date_format), + get_datetime(to_date).strftime(date_format)) return data