C M wrote:

Thanks to you both--using the || did the trick, and I can try the other
approaches mentioned as well.  In Python Igor's suggestion was just:

amount = "+1"
cur.execute('SELECT string, d FROM test WHERE d >= date("now", ? || ? || "
days")',amount)

You will might be better off building the entire argument string in Python and then binding that string to a single argument to the date function in the SQL. You can then use the same query to do offsets in hours, days, months, or years for example. It will probably be slightly faster as well since SQLite will be parsing an executing a simpler SQL statement.

You should also invert your string quoting in Python. SQL uses single quotes for literal values, and double quotes for identifiers (such as table and column names). SQLite accepts double quotes around literals as an extension, but it can get you into trouble if you have a column with the same name as your literal value. In that case it will be interpreted as the column name. You might even want to use Python's triple quotes to allow both single and double quotes to be used in the SQL string itself.

Note, the plus character in '+1 days' is not needed. It is simply a sign character, it does not signify addition. You only need the sign if you want a negative offset.

amount = 1
unit = "days"
offset = str(amount) + " " + unit
cur.execute("SELECT string, d FROM test WHERE d >= date('now', ?)", offset)


HTH
Dennis Cote



-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to