Tarikh & Masa SQLite
SQLite menyokong lima fungsi tarikh dan masa berikut:
序号 | 函数 | 实例 |
---|---|---|
1 | date(timestring, modifier, modifier, ...) | 以 YYYY-MM-DD 格式返回日期。 |
2 | time(timestring, modifier, modifier, ...) | 以 HH:MM:SS 格式返回时间。 |
3 | datetime(timestring, modifier, modifier, ...) | 以 YYYY-MM-DD HH:MM:SS 格式返回。 |
4 | julianday(timestring, modifier, modifier, ...) | 这将返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数。 |
5 | strftime(format, timestring, modifier, modifier, ...) | 这将根据第一个参数指定的格式字符串返回格式化的日期。具体格式见下边讲解。 |
Lima fungsi tarikh dan masa di atas mengambil rentetan masa sebagai parameter. Rentetan masa diikuti dengan sifar atau lebih pengubah suai. Fungsi strftime() juga boleh mengambil format rentetan format sebagai hujah pertamanya. Jenis rentetan masa dan pengubah suai yang berbeza akan diterangkan kepada anda secara terperinci di bawah.
Rentetan masa
Rentetan masa boleh dalam mana-mana format berikut:
序号 | 时间字符串 | 实例 |
---|---|---|
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 | 30-12-2010 12:10 |
5 | HH:MM | 12:10 |
6 | YYYY-MM-DDTHH:MM | 2010-12-30 12:10 |
7 | HH:MM:SS | 12:10:01 |
8 | YYYYMMDD HHMMSS | 20101230 121001 |
9 | now | 2013-05-07 |
Anda boleh menggunakan "T" sebagai aksara literal untuk memisahkan tarikh dan masa.
Pengubahsuai
Rentetan masa boleh diikuti oleh sifar atau lebih pengubah, yang akan menukar tarikh dan/atau masa yang dikembalikan oleh lima fungsi di atas. Mana-mana daripada lima fungsi di atas mengembalikan masa. Pengubah suai hendaklah digunakan dari kiri ke kanan dan pengubahsuai yang boleh digunakan dalam SQLite disenaraikan di bawah:
NNN hari
NNN jam
NNN minit
NNN.NNNN saat
NNN bulan
NNN tahun
permulaan bulan
permulaan tahun
permulaan hari
hari minggu N
unixepoch
waktu tempatan
utc
Pemformatan
SQLite menyediakan fungsi yang sangat mudah strftime() untuk memformat sebarang tarikh dan masa. Anda boleh memformat tarikh dan masa menggunakan penggantian berikut:
替换 | 描述 |
---|---|
%d | 一月中的第几天,01-31 |
%f | 带小数部分的秒,SS.SSS |
%H | 小时,00-23 |
%j | 一年中的第几天,001-366 |
%J | 儒略日数,DDDD.DDDD |
%m | 月,00-12 |
%M | 分,00-59 |
%s | 从 1970-01-01 算起的秒数 |
%S | 秒,00-59 |
%w | 一周中的第几天,0-6 (0 is Sunday) |
%W | 一年中的第几周,01-53 |
%Y | 年,YYYY |
%% | % symbol |
Instance
Sekarang mari cuba contoh lain menggunakan gesaan SQLite. Berikut adalah untuk mengira tarikh semasa:
sqlite> SELECT date('now'); 2013-05-07
Berikut adalah untuk mengira hari terakhir bulan semasa:
sqlite> SELECT date('now','start of month','+1 month','-1 day'); 2013-05-31
Berikut adalah untuk mengira jumlah tarikh yang diberi cap masa UNIX 1092941466 Masa:
sqlite> SELECT datetime(1092941466, 'unixepoch'); 2004-08-19 18:51:06
Begini cara mengira tarikh dan masa berbanding zon waktu tempatan untuk cap waktu UNIX tertentu 1092941466:
sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime'); 2004-08-19 11:51:06
Begini cara mengira cap masa UNIX semasa:
sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime'); 1367926057
Di bawah Kira bilangan hari sejak penandatanganan Pengisytiharan Kemerdekaan Amerika Syarikat:
sqlite> SELECT julianday('now') - julianday('1776-07-04'); 86504.4775830326
Berikut ialah pengiraan bilangan saat sejak detik tertentu pada tahun 2004:
sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56'); 295001572
Berikut ialah pengiraan yang pertama dalam bulan Oktober tahun itu Tarikh Selasa:
sqlite> SELECT date('now','start of year','+9 months','weekday 2'); 2013-10-01
Berikut ialah masa dalam saat sejak zaman UNIX (serupa dengan strftime(' %s','now'), kecuali bahagian perpuluhan disertakan) :
sqlite> SELECT (julianday('now') - 2440587.5)*86400.0; 1367926077.12598
Menukar antara nilai UTC dan masa tempatan Apabila memformat tarikh, gunakan pengubah suai utc atau masa tempatan, seperti ini:
sqlite> SELECT time('12:00', 'localtime'); 05:00:00
sqlite> SELECT time('12:00', 'utc'); 19:00:00