如何在 sqlite 中使用 strftime() 函数提取日期时间格式与正常工作格式不同的年份
How to use strftime() function in sqlite for extracting Year where datetime is in a different format than what would normally work
在我的课程中学习 SQL 时,我使用了函数 YEAR(Start_Time) AS Year
Start_Time
是一个列 header。日期时间示例采用以下格式:26/12/2017 09:00:00
YEAR()
函数适用于 SQL.
但是,当我继续 SQLite(在 DB 浏览器上)时,该功能不起作用。我用的是strftime('%Y', 'Start_Time')
。我知道 strftime 从左到右。有谁知道上面给出的日期时间格式在 sqlite 中与 YEAR()
等效的函数是什么?
在SQL中:
YEAR(Start_Time) AS Year
答案:
2017
在 sqlite 中:
YEAR(Start_Time)
答案:
function not recognized
strftime('%Y', 'Start_time')
答案:
function not recognized
SQlite 与其他 RDBMS 非常不同:它没有 date/time 类型。您只能将日期存储为数字或文本。
函数 strftime()
能够从存储在文本列中的日期中提取 date/time 信息,但它只有在您遵守 ISO8601 表示法时才有效:YYYY-MM-DD HH:MM:SS.SSS ,你的约会对象不是这种情况。
如果要使用 strftime()
从中提取年份,则需要先转换日期
对于你的情况,如果你只转换日期部分而不转换时间部分,那也行得通。
开始吧:
SELECT Start_Time,
(substr(Start_Time,7,4) || '-' || substr(Start_Time,4,2) || '-' || substr(Start_Time,1,2)) as dateconverted,
strftime('%Y', (substr(Start_Time,7,4) || '-' || substr(Start_Time,4,2) || '-' || substr(Start_Time,1,2)) ) as year
FROM test;
结果
Start_Time dateconverted year
26/12/2017 09:00:00 2017-12-26 2017
如果您想避免这种混乱,您只需从一开始就以正确的格式存储您的 dates/times,没有其他解决方法。
实现方式是您的第三选择。 strftime('%Y', 'time string')
。确保时间字符串是接受格式之一的字符串。您可能会看到:(https://sqlite.org/lang_datefunc.html).
在我的课程中学习 SQL 时,我使用了函数 YEAR(Start_Time) AS Year
Start_Time
是一个列 header。日期时间示例采用以下格式:26/12/2017 09:00:00
YEAR()
函数适用于 SQL.
但是,当我继续 SQLite(在 DB 浏览器上)时,该功能不起作用。我用的是strftime('%Y', 'Start_Time')
。我知道 strftime 从左到右。有谁知道上面给出的日期时间格式在 sqlite 中与 YEAR()
等效的函数是什么?
在SQL中:
YEAR(Start_Time) AS Year
答案:
2017
在 sqlite 中:
YEAR(Start_Time)
答案:
function not recognized
strftime('%Y', 'Start_time')
答案:
function not recognized
SQlite 与其他 RDBMS 非常不同:它没有 date/time 类型。您只能将日期存储为数字或文本。
函数 strftime()
能够从存储在文本列中的日期中提取 date/time 信息,但它只有在您遵守 ISO8601 表示法时才有效:YYYY-MM-DD HH:MM:SS.SSS ,你的约会对象不是这种情况。
如果要使用 strftime()
从中提取年份,则需要先转换日期
对于你的情况,如果你只转换日期部分而不转换时间部分,那也行得通。
开始吧:
SELECT Start_Time,
(substr(Start_Time,7,4) || '-' || substr(Start_Time,4,2) || '-' || substr(Start_Time,1,2)) as dateconverted,
strftime('%Y', (substr(Start_Time,7,4) || '-' || substr(Start_Time,4,2) || '-' || substr(Start_Time,1,2)) ) as year
FROM test;
结果
Start_Time dateconverted year
26/12/2017 09:00:00 2017-12-26 2017
如果您想避免这种混乱,您只需从一开始就以正确的格式存储您的 dates/times,没有其他解决方法。
实现方式是您的第三选择。 strftime('%Y', 'time string')
。确保时间字符串是接受格式之一的字符串。您可能会看到:(https://sqlite.org/lang_datefunc.html).