SQLite - Tanggal & Waktu

SQLite mendukung lima fungsi tanggal dan waktu sebagai berikut -

Sr.No. Fungsi Contoh
1 tanggal (timestring, pengubah ...) Ini mengembalikan tanggal dalam format ini: YYYY-MM-DD
2 waktu (timestring, pengubah ...) Ini mengembalikan waktu sebagai HH: MM: SS
3 datetime (timestring, pengubah ...) Ini mengembalikan YYYY-MM-DD HH: MM: SS
4 julianday (timestring, pengubah ...) Ini mengembalikan jumlah hari sejak tengah hari di Greenwich pada 24 November 4714 SM
5 strftime (timestring, pengubah ...) Ini mengembalikan tanggal yang diformat sesuai dengan format string yang ditentukan sebagai argumen pertama yang diformat sesuai format yang dijelaskan di bawah ini.

Kelima fungsi tanggal dan waktu di atas menggunakan string waktu sebagai argumen. String waktu diikuti oleh nol atau lebih pengubah. Fungsi strftime () juga menggunakan string format sebagai argumen pertamanya. Bagian berikut akan memberi Anda detail tentang berbagai jenis string waktu dan pengubah.

Time Strings

String waktu bisa dalam salah satu format berikut -

Sr.No. String Waktu Contoh
1 TTTT-BB-HH 2010-12-30
2 TTTT-BB-HH JJ: MM 2010-12-30 12:10
3 TTTT-BB-HH JJ: MM: SS.SSS 2010-12-30 12: 10: 04.100
4 BB-HH-TTTT JJ: MM 30-12-2010 12:10
5 HH: MM 12:10
6 TTTT-BB-HHTHH: MM 2010-12-30 12:10
7 HH: MM: SS 12:10:01
8 YYYYMMDD HHMMSS 20101230 121001
9 sekarang 2013-05-07

Anda dapat menggunakan "T" sebagai karakter literal yang memisahkan tanggal dan waktu.

Pengubah

Rangkaian waktu dapat diikuti oleh nol atau lebih pengubah yang akan mengubah tanggal dan / atau waktu yang dikembalikan oleh salah satu dari lima fungsi di atas. Pengubah diterapkan dari kiri ke kanan.

Pengubah berikut tersedia di SQLite -

  • NNN hari
  • Jam NNN
  • NNN menit
  • NNN.NNNN detik
  • NNN bulan
  • NNN tahun
  • awal bulan
  • awal tahun
  • awal hari
  • hari kerja N
  • unixepoch
  • localtime
  • utc

Format

SQLite menyediakan fungsi yang sangat berguna strftime()untuk memformat tanggal dan waktu apa pun. Anda dapat menggunakan substitusi berikut untuk memformat tanggal dan waktu Anda.

Pengganti Deskripsi
% d Hari dalam sebulan, 01-31
% f Detik pecahan, SS.SSS
% H Jam, 00-23
% j Hari dalam setahun, 001-366
% J Nomor hari Julian, DDDD.DDDD
% m Bulan, 00-12
% M Menit, 00-59
% s Detik sejak 1970-01-01
% S Detik, 00-59
% w Hari dalam seminggu, 0-6 (0 adalah Minggu)
% W Minggu dalam setahun, 01-53
% Y Tahun, YYYY
%% % simbol

Contoh

Mari kita coba berbagai contoh sekarang menggunakan prompt SQLite. Perintah berikut menghitung tanggal saat ini.

sqlite> SELECT date('now');
2013-05-07

Perintah berikut menghitung hari terakhir bulan ini.

sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31

Perintah berikut menghitung tanggal dan waktu untuk stempel waktu UNIX 1092941466.

sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

Perintah berikut menghitung tanggal dan waktu untuk stempel waktu UNIX 1092941466 dan mengimbangi zona waktu lokal Anda.

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 13:51:06

Perintah berikut menghitung stempel waktu UNIX saat ini.

sqlite> SELECT strftime('%s','now');
1393348134

Perintah berikut menghitung jumlah hari sejak penandatanganan Deklarasi Kemerdekaan AS.

sqlite> SELECT julianday('now') - julianday('1776-07-04');
86798.7094695023

Perintah berikut menghitung jumlah detik sejak momen tertentu pada tahun 2004.

sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572

Perintah berikut menghitung tanggal Selasa pertama bulan Oktober untuk tahun berjalan.

sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01

Perintah berikut menghitung waktu sejak epoch UNIX dalam hitungan detik (seperti strftime ('% s', 'now') kecuali termasuk bagian pecahan).

sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598

Untuk mengonversi antara nilai UTC dan waktu lokal saat memformat tanggal, gunakan utc atau pengubah waktu lokal sebagai berikut -

sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00