sql: pass date/datetime objects in criterias (#49452) #987

Merged
fpeters merged 1 commits from wip/49452-datetime-in-criteria into main 2024-01-12 15:05:12 +01:00
2 changed files with 7 additions and 4 deletions

View File

@ -899,6 +899,11 @@ def test_sql_table_select_datetime(pub):
len(data_class.select([st.Greater('receipt_time', (d + datetime.timedelta(days=20)).timetuple())]))
== 29
)
assert len(data_class.select([st.Equal('receipt_time', datetime.date(1900, 1, 1).timetuple())])) == 0
assert len(data_class.select([st.Equal('receipt_time', datetime.date(1, 1, 1))])) == 0
assert len(data_class.select([st.Greater('receipt_time', datetime.date(1, 1, 1))])) == 50
assert len(data_class.select([st.Equal('receipt_time', datetime.date(1, 1, 1).timetuple())])) == 0
assert len(data_class.select([st.Greater('receipt_time', datetime.date(1, 1, 1).timetuple())])) == 50
def test_select_limit_offset(pub):

View File

@ -44,10 +44,8 @@ class Criteria(wcs.qommon.storage.Criteria):
self.field = kwargs.get('field')
def format_value(self, value):
if isinstance(value, datetime.date) and not isinstance(value, datetime.datetime):
return value.strftime('%Y-%m-%d')
elif isinstance(value, time.struct_time):
return datetime.datetime.fromtimestamp(time.mktime(value))
if isinstance(value, time.struct_time):
return datetime.datetime(*value[:6])
else:
return value