Is there a way to write a query equivalent to
select * from log_table where dt >= 'nov-27-2009' and dt < 'nov-28-2009';
but where you could specify only 1 date and say you want the results for that entire day until the next one.
I’m just making this up, but something of the form:
select * from log_table where dt = 'nov-27-2009':+1;
I do not believe there is one method that is portable to all RDBMSes.
A check in one of my references (SQL Cookbook) shows that no one RDBMS solves the problem quite the same way. I would recommend checking out Chapter 8 of that book, which covers all of the different methods for DB2, Oracle, PostgreSQL, MySQL.
I’ve had to deal with this issue in SQLite, though, and SQL Cookbook doesn’t address that RDBMS, so I’ll mention a bit about it here. SQLite doesn’t have a date/time data type; you have to create your own by storing all date/time data as
TEXTand ensure that your application enforces its formatting. SQLite does have a set of date/time conversion functions that allow you to add nominal date/times while maintaining the data as strings. If you need to add two time durations (HH:MM:SS) to each other, though, based upon data that you’ve stored in text columns that you are treating as date/time data, you’ll have to write your own functions (search for “Defining SQLite User Functions”) and attach them to the database at runtime via a call tosqlite3_create_function(). If you want an example of some user functions that add time values, let me know.