in MSSQL, smalldatetime is less precise than standard datetime field.
Obviously this table wasn't created by web2py.
Anyway, the problem here is that your "now()" - that is not a function
provided by web2py - is set to a too much "resoluted" (as in "too much
numbers after the seconds part) value.
That date goes into the microsecond detail, and smalldatetime "accepts" an
internal conversion from string to a smalldatetime value only if you
specify up to milliseconds (i.e. 2000-01-01 00:00:00.001 vs 2000-01-01
00:00:00.000001).
You need to "round" the value returned by your "now()" function.
On Wednesday, September 19, 2012 6:46:16 PM UTC+2, KMax wrote:
>
> Hello,
> DAL with MSSQL
> Query like:
> db(db.mytable.date>now()).select()
> Gives error:
> <class 'pyodbc.DataError'> ('22007', '[22007] [FreeTDS][SQL
> Server]Conversion failed when converting character string to smalldatetime
> data type. (295) (SQLExecDirectW)')
>
> now() -> translated into:
> '2012-09-19 23:22:56.977817'
>
> Running select using '2012-09-19 23:22:56.977817' from MS SQL Studio
> gives same error,
> BUT
> if I use shorter time:
> '2012-09-19 23:22:56.977' - this works.
>
> Please let me know how to workaround this?
> Search gave nothing useful.
>
--