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
|
星期幾(0 到6 ,其中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]”
檢索(計算/找出)當前日期
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>
檢索本月的第一天:
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>
檢索本月的最後一天
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>
在當前日期時間上添加/減去年數和天數(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>
[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'
);
對應 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;
}