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