Please open a ticket about this. Expressions like date_diff were designed 
to be in the query, not in the list of selected columns. I think this can 
be done but need to check what breaks.

On Friday, 28 June 2013 03:02:06 UTC-5, Paolo valleri wrote:
>
> Dear all, 
> I am trying to run simple mathematical operations with datetime and 
> postgres as backend (
> http://www.postgresql.org/docs/9.0/static/functions-datetime.html)
> I've prepared this simple example code:
> from datetime import timedelta
> db.define_table('test_sum',
> Field('first_int', 'integer'),
> Field('second_int', 'integer'),
> Field('first_date', 'datetime'),
> Field('second_date', 'datetime'),
> ) 
>
> db.test_sum.insert(first_int=40, second_int=30, first_date=request.now, 
> second_date=request.now-timedelta(days=1))
> diff_int = db.test_sum.first_int - db.test_sum.second_int
> diff_date =  db.test_sum.first_date - db.test_sum.second_date
> print db(db.test_sum).select(diff_int)
> print db(db.test_sum).select(diff_date)
> With postgres the first query is executed correctly, the second failed 
> raising the ticket:
>
> Traceback (most recent call last):
>   File "/home/pvalleri/src/web2py/gluon/restricted.py", line 212, in 
> restricted
>     exec ccode in environment
>   File "/home/pvalleri/src/web2py/applications/vtraffic/models/db.py" 
> <http://127.0.0.1:8000/admin/edit/vtraffic/models/db.py>, line 98, in <module>
>     print db(db.test_sum).select(diff_date)
>   File "/home/pvalleri/src/web2py/gluon/dal.py", line 9935, in select
>     return adapter.select(self.query,fields,attributes)
>   File "/home/pvalleri/src/web2py/gluon/dal.py", line 1709, in select
>     return self._select_aux(sql,fields,attributes)
>   File "/home/pvalleri/src/web2py/gluon/dal.py", line 1690, in _select_aux
>     return processor(rows,fields,self._colnames,cacheable=cacheable)
>   File "/home/pvalleri/src/web2py/gluon/dal.py", line 2093, in parse
>     fields[j].type,blob_decode)
>   File "/home/pvalleri/src/web2py/gluon/dal.py", line 1908, in parse_value
>     return self.parsemap[key](value,field_type)
>   File "/home/pvalleri/src/web2py/gluon/dal.py", line 1995, in parse_double
>     return float(value)
> TypeError: float() argument must be a string or a number
>
>
> To some extent the interesting ticket is that, the query generated works 
> without problems (tested with pgadmin).
> SELECT  (test_sum.second_date - test_sum.first_date) FROM test_sum WHERE (
> test_sum.id IS NOT NULL);
>
> Moreover, I run the same example with sqlite, it worked well without 
> error, the resulting values are wrong though. 
> What can I do?
>
> Paolo
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to