SQLite strftime()函數日期日間格式化 [C# datetime(string) to unix time]

SQLite strftime()函數日期日間格式化 [C# datetime(string) to unix time]

SQLite strftime()函數日期日間格式化 [C# datetime(string) to unix time]


資料來源: https://www.yiibai.com/sqlite/strftime.html

SQLitestrftime()是一個功能非常強大的函數,可以用來獲取日期和時間,並且還可以執行日期計算。

語法:

strftime(format, timestring [, modifier1, modifier2, ... modifier_n ] )  



這裡,format可以是以下任何一種:

編號 格式 解釋/描述
1 %Y 4位數表示年份(0000至9999)
2 %W 表示一年之中的第幾週(00至53)
3 %w 星期幾(06,其中0表示星期日)
4 %m 表示一年之中的第幾月(01至12)
5 %d 表示一個月之中的第幾天(00至31)
6 %H 小時(00 至24)
7 %M 分鐘(00 至60)
8 %S 秒(00至59)
9 %s 1970-01-01以來的秒數
10 %f 小數秒( SS.SSS)
11 %j 一年之中的第幾天(001 至366)
12 %J 儒略日的數字值




這裡,timestring是一個日期值,可以是以下任何一個:

編號 timestring的值 描述
1 now 用來返回當前日期的字面值
2 YYYY-MM-DD 指定格式為YYYY-MM-DD的日期值
3 YYYY-MM-DD HH:MM 指定格式為YYYY-MM-DD HH:MM的日期值
4 YYYY-MM-DD HH:MM:SS 指定格式為YYYY-MM-DD HH:MM:SS的日期值
5 YYYY-MM-DD HH:MM:SS.SSS 指定格式為YYYY-MM-DD HH:MM:SS.SSS的日期值
6 HH:MM 指定格式為HH:MM的日期值
7 HH:MM:SS 指定格式為HH:MM:SS的日期值
8 HH:MM:SS.SSS 指定格式為HH:MM:SS.SSS的日期值
9 YYYY-MM-DDTHH:MM 指定格式化為YYYY-MM-DDTHH:MM的日期值,其中T是一個文本字符分隔符,用於分隔日期和時間。
10 YYYY-MM-DDTHH:MM:SS 指定格式化為YYYY-MM-DDTHH:MM:SS的日期值,其中T是一個文本字符分隔符,用於分隔日期和時間。
11 YYYY-MM-DDTHH:MM:SS.SSS 指定格式化為YYYY-MM-DDTHH:MM:SS.SSS的日期值,其中T是一個文本字符分隔符,用於分隔日期和時間。
12 DDDDDDDDDD 指定儒略日的日期數



modifier1 , modifier2 , … modifier_n : 這些修飾符是可選的。這些字符與時間字符串一起使用來添加或減少時間,日期或年份。

編號 修辭符 描述
1 [+-]NNN years 用於指定添加/減去日期的年數
2 [+-]NNN months 用於指定添加/減去日期的月數
3 [+-]NNN days 用於指定添加/減去日期的天數
4 [+-]NNN hours 用於指定添加/減去日期的小時數
5 [+-]NNN minutes 用於指定添加/減去日期的分鐘數
6 [+-]NNN seconds 用於指定添加/減去日期的秒數
7 [+-]NNN.NNNN seconds 用於指定添加/減去日期的秒數(和小數秒)
8 start of year 用於將日期重新轉移到年初
9 start of month 用於將日期重新轉移到月初
10 start of day 用於將日期重新移動到一天的開始
11 weekday N 用於將日期向前移動到工作日數為N的下一個日期(0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday)
12 unixepoch 它與DDDDDDDDDD時間字符串一起用於將日期解釋為UNIX時間(即:自1970-01-01以來的秒數)
13 localtime 用於將日期調整為本地時間,假設時間戳以UTC表示
14 utc 它用於將日期調整為utc,假設時間戳以本地時間表達

6 thoughts on “SQLite strftime()函數日期日間格式化 [C# datetime(string) to unix time]

  1. 檢索(計算/找出)當前日期

    sqlite> SELECT strftime('%Y %m %d', 'now');
    2017 05 24

    sqlite> SELECT strftime('%Y-%m-%d %H:%M', 'now');
    2017-05-24 19:04
    sqlite>

  2. 檢索本月的第一天:

    sqlite> SELECT strftime('%Y-%m-%d', '2017-09-14', 'start of month');
    2017-09-01

    sqlite> SELECT strftime('%Y-%m-%d', 'now', 'start of month');
    2017-05-01

    sqlite> SELECT strftime('%Y-%m-%d', '2017-03-07', '-6 days');
    2017-03-01

    sqlite> SELECT strftime('%Y-%m-%d', 'now', '-13 days');
    2017-05-11

    sqlite>

  3. 檢索本月的最後一天

    sqlite> SELECT strftime('%Y-%m-%d', '2017-12-07', 'start of month', '+1 month', '-1 day');
    2017-12-31

    sqlite> SELECT strftime('%Y-%m-%d', 'now', 'start of month', '+1 month', '-1 day');
    2017-05-31

    sqlite> SELECT strftime('%Y-%m-%d', '2017-08-07', '+24 days');
    2017-08-31

    sqlite> SELECT strftime('%Y-%m-%d', 'now', '+24 days');
    2017-06-17

    sqlite>

  4. 在當前日期時間上添加/減去年數和天數(SQLITE 日期/時間/天數 計算)

    sqlite> SELECT strftime('%Y-%m-%d', '2017-11-14', '+2 years');
    2019-11-14

    sqlite> SELECT strftime('%Y-%m-%d', 'now', '-2 years');
    2015-05-24

    sqlite> SELECT strftime('%Y-%m-%d', '2017-10-14', '+7 days');
    2017-10-21

    sqlite> SELECT strftime('%Y-%m-%d', 'now', '-10 days');
    2017-05-14

    sqlite>

  5. [SQL – C# datetime(string) to unix time]


    select
    sum(class_last_time) as class_last_time,
    sum(daily_last_time) as daily_last_time
    from
    (
    Select
    strftime('%s',max(report_time)) as class_last_time,
    0 as daily_last_time
    from daily_report
    where report_type='C'
    UNION
    Select
    0 as class_last_time,
    strftime('%s',max(report_time)) as daily_last_time
    from daily_report
    where report_type='D'
    );

    1. 對應 C# Function


      public static DateTime UnixTimeStampToDateTime(double unixTimeStamp,bool blnUTC=true)
      {
      // Unix timestamp is seconds past epoch
      DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
      if(blnUTC)
      {
      dateTime = dateTime.AddSeconds(unixTimeStamp).ToLocalTime();//from php vteam api to C# 使用
      }
      else
      {
      dateTime = dateTime.AddSeconds(unixTimeStamp);//from SQLite STRFTIME('%s',max(report_time)) to C# 使用
      }

      return dateTime;
      }

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *