使用 strftime 的 SQLite 自定义格式化日期
SQLite Custom Formatting Date using strftime
我有一个包含日期的小 table。对于特定的报告,我只想输出没有年份的月份和日期。 “君。 09”而不是“06/09/2020”。我一直在试验 strftime,但我可以让它工作。 strftime 只给我 NULL。
这里是 table 定义:
CREATE TABLE "visit_log" ("visit_date" DATE, "visit_time" TIME, "client_relation" TEXT, "household_size" INTEGER)
以下是其内容示例:
rowid visit_date visit_time client_relation household_size
12 06/09/2020 Drop-In 8
13 06/09/2020 Drop-In 5
15 06/16/2020 Scheduled 1
16 06/16/2020 Scheduled 1
17 06/16/2020 Drop-In 4
18 06/16/2020 Drop-In 5
这是一个示例查询:
SELECT
visit_date,
strftime('%Y', visit_date) as "Year",
strftime('%m', visit_date) as "Month",
strftime('%d', visit_date) as "Day"
FROM
visit_log
这是输出样本。
visit_date Year Month Day
06/09/2020 NULL NULL NULL
06/09/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
我错过了什么?
日期的格式化方式使得无法直接使用 SQLite 字符串函数(SQLite 需要类似 YYYY-MM-DD
的东西,而你有 MM/DD/YYYY
)。
我建议修复您的数据,以便为您的日期字符串使用正确的格式。您可以使用以下 update
查询来执行此操作:
update visit_log
set visit_date =
substr(visit_date, 7, 4)
|| '-' || substr(visit_date, 1, 2)
|| '-' || substr(visit_date, 4, 2)
同时,对于您当前的数据集,在这里使用字符串函数似乎更简单:
select
visit_date,
substr(visit_date, 7, 4) as "year",
substr(visit_date, 1, 2) as "month",
substr(visit_date, 4, 2) as "day"
from visit_log
我有一个包含日期的小 table。对于特定的报告,我只想输出没有年份的月份和日期。 “君。 09”而不是“06/09/2020”。我一直在试验 strftime,但我可以让它工作。 strftime 只给我 NULL。
这里是 table 定义:
CREATE TABLE "visit_log" ("visit_date" DATE, "visit_time" TIME, "client_relation" TEXT, "household_size" INTEGER)
以下是其内容示例:
rowid visit_date visit_time client_relation household_size
12 06/09/2020 Drop-In 8
13 06/09/2020 Drop-In 5
15 06/16/2020 Scheduled 1
16 06/16/2020 Scheduled 1
17 06/16/2020 Drop-In 4
18 06/16/2020 Drop-In 5
这是一个示例查询:
SELECT
visit_date,
strftime('%Y', visit_date) as "Year",
strftime('%m', visit_date) as "Month",
strftime('%d', visit_date) as "Day"
FROM
visit_log
这是输出样本。
visit_date Year Month Day
06/09/2020 NULL NULL NULL
06/09/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
06/16/2020 NULL NULL NULL
我错过了什么?
日期的格式化方式使得无法直接使用 SQLite 字符串函数(SQLite 需要类似 YYYY-MM-DD
的东西,而你有 MM/DD/YYYY
)。
我建议修复您的数据,以便为您的日期字符串使用正确的格式。您可以使用以下 update
查询来执行此操作:
update visit_log
set visit_date =
substr(visit_date, 7, 4)
|| '-' || substr(visit_date, 1, 2)
|| '-' || substr(visit_date, 4, 2)
同时,对于您当前的数据集,在这里使用字符串函数似乎更简单:
select
visit_date,
substr(visit_date, 7, 4) as "year",
substr(visit_date, 1, 2) as "month",
substr(visit_date, 4, 2) as "day"
from visit_log