On Dec 12, 2007 1:51 PM, Dennis Cote <[EMAIL PROTECTED]> wrote: > 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 >
Thank you--very useful to know.