SQLite Date & Time
SQLite supports the following five date and time functions:
No. | Function | Example |
---|---|---|
1 | date(timestring, modifier, modifier, ...) | Returns the date in YYYY-MM-DD format. |
2 | time(timestring, modifier, modifier, ...) | Returns the time in HH:MM:SS format. |
3 | datetime(timestring, modifier, modifier, ...) | Returns in YYYY-MM-DD HH:MM:SS format. |
4 | julianday(timestring, modifier, modifier, ...) | This returns the number of days since noon in Greenwich on November 24, 4714 B.C. |
5 | strftime(format, timestring, modifier, modifier, ...) | This returns the formatted date according to the format string specified in the first parameter. See details below. |
The above five date and time functions take a time string as an argument. The time string is followed by zero or more modifiers. The strftime() function can also take a format string as its first parameter. Below, we will explain different types of time strings and modifiers in detail.
Time Strings
A time string can be in any of the following formats:
No. | Time String | Example |
---|---|---|
1 | YYYY-MM-DD | 2010-12-30 |
2 | YYYY-MM-DD HH:MM | 2010-12-30 12:10 |
3 | YYYY-MM-DD HH:MM:SS.SSS | 2010-12-30 12:10:04.100 |
4 | MM-DD-YYYY HH:MM | 12-30-2010 12:10 |
5 | HH:MM | 12:10 |
6 | YYYY-MM-DD THH:MM | 2010-12-30 12:10 |
7 | HH:MM:SS | 12:10:01 |
8 | YYYYMMDD HHMMSS | 20101230 121001 |
9 | now | 2013-05-07 |
You can use "T" as a literal character to separate the date and time.
Modifiers
A time string can be followed by zero or more modifiers, which will change the date and/or time returned by the above five functions. Modifiers should be used from left to right. Below are the modifiers available in SQLite:
- NNN days
- NNN hours
- NNN minutes
- NNN.NNNN seconds
- NNN months
- NNN years
- start of month
- start of year
- start of day
- weekday N
- unixepoch
- localtime
- utc
Formatting
SQLite provides a very convenient function, strftime(), to format any date and time. You can use the following substitutions to format the date and time:
Examples
Now let's try different examples using the SQLite prompt. Below is the calculation of the current date:
sqlite> SELECT date('now');
2013-05-07
Below is the calculation of the last day of the current month:
sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31
Below is the calculation of the date and time for a given UNIX timestamp 1092941466:
sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06
Below is the calculation of the date and time for a given UNIX timestamp 1092941466 relative to the local time zone:
sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 11:51:06
Below is the calculation of the current UNIX timestamp:
sqlite> SELECT strftime('%s','now');
1367926057
Below is the calculation of the days since the signing of the U.S. "Declaration of Independence":
sqlite> SELECT julianday('now') - julianday('1776-07-04');
86504.4775830326
Below is the calculation of the seconds since a particular moment in 2004:
sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 00:00:00');
sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572
Below is the calculation for the date of the first Tuesday in October of the current year:
sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01
Below is the calculation for the time in seconds since the UNIX epoch (similar to strftime('%s','now'), but includes fractional parts):
sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598
To convert between UTC and local time values when formatting dates, use the 'utc' or 'localtime' modifiers as shown below:
sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00