English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

التاريخ والوقت SQLite

يدعم SQLite خمس وظائف تاريخية زمنية هي:

الترقيمالوظيفةمثال
1date(timestring, modifier, modifier, ...)سيقوم بإرجاع التاريخ بالتنسيق YYYY-MM-DD.
2time(timestring, modifier, modifier, ...)سيقوم بإرجاع الوقت بالتنسيق HH:MM:SS.
3datetime(timestring, modifier, modifier, ...)سيقوم بإرجاع التوقيت بالتنسيق YYYY-MM-DD HH:MM:SS.
4julianday(timestring, modifier, modifier, ...)هذا سيقوم بتحويل عدد الأيام من منتصف النهار في 24 نوفمبر 4714 قبل الميلاد من التوقيت الزمني لغرينتش.
5strftime(format, timestring, modifier, modifier, ...)سيقوم هذا بإرجاع التاريخ المformatted بناءً على سلسلة التنسيق المحددة في المعامل الأول. شاهد الشرح أدناه.

تقوم الخمس وظائف التاريخ والوقت المذكورة أعلاه بتقديم سلسلة الوقت كمعامل. يمكن أن تأتي بعدة معدلات. يمكن أن تأتي وظيفة strftime() أيضًا بسلسلة صيغة كمعامل الأول. سأوضح لك أدناه أنواع سلسلة الوقت المختلفة والمعلمات.

سلسلة الوقت

يمكن أن تأخذ سلسلة الوقت أي من الأشكال التالية:

الترقيمسلسلة الوقتمثال
1YYYY-MM-DD2010-12-30
2YYYY-MM-DD HH:MM2010-12-30 12:10
3YYYY-MM-DD HH:MM:SS.SSS2010-12-30 12:10:04.100
4MM-DD-YYYY HH:MM30-12-2010 12:10
5HH:MM12:10
6YYYY-MM-DDTHH:MM2010-12-30 12:10
7HH:MM:SS12:10:01
8YYYYMMDD HHMMSS20101230 121001
9now2013-05-07

يمكنك استخدام "T" كحرف فراز بين التاريخ والوقت.

معدل(Modifier)

يمكن إضافة صيغة إلى نهاية سلسلة الوقت،أو يمكن أن تكون هناك عدة صيغ. هذا سيغير التاريخ والوقت المقدمين من قبل الخمس وظائف المذكورة أعلاه. أي وقت يقدمه الخمس وظائف المذكورة أعلاه. يجب استخدام المعدلات من اليسار إلى اليمين،وهنا قائمة بالمعدلات التي يمكن استخدامها في 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

تنسيق

يقدم SQLite وظائف مريحة للغاية strftime() لتنسيق أي تاريخ وموعد. يمكنك استخدام التبديل التالي لتنسيق التاريخ والموعد:

الاستبدالالوصف
%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 هو الأحد)
%Wالأسبوع في السنة، 01-53
%Yالسنة، YYYY
%%علامة %

مثال

الآن دعونا نحاول بعض الأمثلة باستخدام وسم 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