SQLite - วันที่และเวลา

SQLite รองรับฟังก์ชันวันที่และเวลาห้าฟังก์ชันดังต่อไปนี้ -

ซีเนียร์ ฟังก์ชัน ตัวอย่าง
1 วันที่ (timestring, modifiers ... ) ส่งคืนวันที่ในรูปแบบนี้: YYYY-MM-DD
2 เวลา (การกำหนดเวลาตัวปรับแต่ง ... ) ส่งคืนเวลาเป็น HH: MM: SS
3 วันที่และเวลา (timestring, modifiers ... ) สิ่งนี้จะคืนค่า YYYY-MM-DD HH: MM: SS
4 julianday (การจับเวลาตัวปรับแต่ง ... ) สิ่งนี้ส่งคืนจำนวนวันนับตั้งแต่เที่ยงในกรีนิชของวันที่ 24 พฤศจิกายน 4714 ปีก่อนคริสตกาล
5 strftime (การกำหนดเวลาการปรับเปลี่ยน ... ) สิ่งนี้ส่งคืนวันที่ที่จัดรูปแบบตามสตริงรูปแบบที่ระบุเป็นอาร์กิวเมนต์แรกที่จัดรูปแบบตามรูปแบบที่อธิบายด้านล่าง

ฟังก์ชันวันที่และเวลาทั้งห้าข้างต้นใช้สตริงเวลาเป็นอาร์กิวเมนต์ สตริงเวลาตามด้วยตัวปรับค่าศูนย์หรือมากกว่า ฟังก์ชัน strftime () ยังรับสตริงรูปแบบเป็นอาร์กิวเมนต์แรก ส่วนต่อไปนี้จะให้รายละเอียดเกี่ยวกับสตริงเวลาและตัวปรับเปลี่ยนประเภทต่างๆ

สตริงเวลา

สตริงเวลาสามารถอยู่ในรูปแบบใดก็ได้ดังต่อไปนี้ -

ซีเนียร์ สตริงเวลา ตัวอย่าง
1 ปปปป - ดด - วว 2010-12-30
2 YYYY-MM-DD HH: MM 2553-12-30 12:10 น
3 YYYY-MM-DD HH: MM: SS.SSS 2553-12-30 12: 10: 04.100 น
4 ดด - ว - ปปปป HH: มม 30-12-2010 12:10 น
5 HH: มม 12:10
6 ปปปป - ดด - ววTHH: มม 2553-12-30 12:10 น
7 HH: MM: SS 12:10:01 น
8 YYYYMMDD HHMMSS 20101230 121001
9 ตอนนี้ 2013-05-07

คุณสามารถใช้ "T" เป็นอักขระตามตัวอักษรคั่นวันที่และเวลา

ตัวปรับเปลี่ยน

สตริงเวลาสามารถตามด้วยตัวปรับค่าศูนย์หรือมากกว่าซึ่งจะเปลี่ยนวันที่และ / หรือเวลาที่ส่งกลับโดยฟังก์ชันใด ๆ จากห้าฟังก์ชันข้างต้น การปรับเปลี่ยนใช้จากซ้ายไปขวา

ตัวดัดแปลงต่อไปนี้มีอยู่ใน SQLite -

  • NNN วัน
  • NNN ชั่วโมง
  • NNN นาที
  • NNN.NNNN วินาที
  • NNN เดือน
  • NNN ปี
  • ต้นเดือน
  • ต้นปี
  • เริ่มต้นวันใหม่
  • วันธรรมดา N
  • unixepoch
  • localtime
  • utc

ฟอร์แมต

SQLite มีฟังก์ชันที่มีประโยชน์มาก strftime()เพื่อจัดรูปแบบวันที่และเวลาใด ๆ คุณสามารถใช้การแทนที่ต่อไปนี้เพื่อจัดรูปแบบวันที่และเวลาของคุณ

การแทน คำอธิบาย
% d วันของเดือน 01-31
% ฉ วินาทีเศษส่วน SS.SSS
% ซ ชั่วโมง 00-23
% ญ วันเดือนปี 001-366
หมายเลขวันจูเลียน DDDD.DDDD
% ม เดือน, 00-12
% ม นาที 00-59
% s วินาทีตั้งแต่ 1970-01-01
% S วินาที 00-59
% w วันในสัปดาห์ 0-6 (0 คือวันอาทิตย์)
% W สัปดาห์ของปี 01-53
% Y ปีปปปปป
%% % สัญลักษณ์

ตัวอย่าง

ลองดูตัวอย่างต่างๆตอนนี้โดยใช้พรอมต์ SQLite คำสั่งต่อไปนี้คำนวณวันที่ปัจจุบัน

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

คำสั่งต่อไปนี้คำนวณวันสุดท้ายของเดือนปัจจุบัน

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

คำสั่งต่อไปนี้คำนวณวันที่และเวลาสำหรับการประทับเวลา UNIX ที่กำหนด 1092941466

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

คำสั่งต่อไปนี้คำนวณวันที่และเวลาสำหรับการประทับเวลา UNIX 1092941466 ที่กำหนดและชดเชยเขตเวลาท้องถิ่นของคุณ

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

คำสั่งต่อไปนี้จะคำนวณการประทับเวลา UNIX ปัจจุบัน

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

คำสั่งต่อไปนี้คำนวณจำนวนวันนับตั้งแต่การลงนามในคำประกาศอิสรภาพของสหรัฐอเมริกา

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

คำสั่งต่อไปนี้คำนวณจำนวนวินาทีนับตั้งแต่ช่วงเวลาหนึ่งในปี 2004

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

คำสั่งต่อไปนี้คำนวณวันที่ของวันอังคารแรกในเดือนตุลาคมสำหรับปีปัจจุบัน

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

คำสั่งต่อไปนี้คำนวณเวลาตั้งแต่ยุค UNIX เป็นวินาที (เช่น strftime ('% s', 'now') ยกเว้นรวมส่วนที่เป็นเศษส่วน)

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

ในการแปลงระหว่างค่า UTC และเวลาท้องถิ่นเมื่อจัดรูปแบบวันที่ให้ใช้ตัวแก้ไข utc หรือ localtime ดังต่อไปนี้ -

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