db(db.mytab.date1-db.mytab.date1 ==
datetime.timedelta(days=2).select()

must be

db(db.mytab.date1 == db.mytab.date1 +
datetime.timedelta(days=2).select()

a query has the form field =  expression. You cannot have the
expression on the left-hand side.

I cannot exclude something else is also wrong. Please check and let us
know.

On Feb 11, 9:25 am, Manuele Pesenti <manuele.pese...@gmail.com> wrote:
> Hi,
>
> how can I select records of a table that got 2 date fields (one datetime
> and a simple date) wich difference is a fixed value?
>
> I thought this solution:
>
> import datetime
> today=datetime.datetime.today()
> yesterday = today.date() - datetime.timedelta(days=1)
>
> db.define_table('mytab',
>      ...
>      Field('date1','datetime',default=today),
> Field('date2','date',default=yesterday)
> )
>
> db(db.mytab.date1-db.mytab.date1 == datetime.timedelta(days=2).select()
> but thats wat I got:
>
> Traceback (most recent call last):
>    File "<console>", line 1, in <module>
>    File "<Path>/web2py/gluon/dal.py", line 4507, in select
>      return self.db._adapter.select(self.query,fields,attributes)
>    File "<Path>/web2py/gluon/dal.py", line 996, in select
>      sql = self._select(query,fields,attributes)
>    File "<Path>/web2py/gluon/dal.py", line 929, in _select
>      sql_w = ' WHERE ' + self.expand(query)
>    File "<Path>/web2py/gluon/dal.py", line 799, in expand
>      return expression.op(expression.first, expression.second)
>    File "<Path>/web2py/gluon/dal.py", line 721, in AND
>      return '(%s AND %s)' % (self.expand(first),self.expand(second))
>    File "<Path>/web2py/gluon/dal.py", line 799, in expand
>      return expression.op(expression.first, expression.second)
>    File "<Path>/web2py/gluon/dal.py", line 751, in EQ
>      return '(%s = %s)' %
> (self.expand(first),self.expand(second,first.type))
>    File "<Path>/web2py/gluon/dal.py", line 805, in expand
>      return self.represent(expression,field_type)
>    File "<Path>/web2py/gluon/dal.py", line 1106, in represent
>      return repr(float(obj))
> TypeError: float() argument must be a string or a number
>
> Thank you very much for any help.
>
>      Manuele

Reply via email to