Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从sqlite中的DATETIME获取月份_Sql_Sqlite - Fatal编程技术网

从sqlite中的DATETIME获取月份

从sqlite中的DATETIME获取月份,sql,sqlite,Sql,Sqlite,我试图从SQLite中的DATETIME字段中提取月份月份(日期字段)和strftime('%m',dateStart)不起作用 有什么想法吗?我不明白,答案是你的问题: select strftime('%m', dateField) as Month ... 如果您正在搜索月份名称,SQLite的核心发行版似乎不支持文本月份名称,我猜您希望以字符串形式获取月份。看起来不是很友好,但你可能明白了重点。只需用变量替换date('now') select case strftime('%m',

我试图从SQLite中的
DATETIME
字段中提取月份<代码>月份(日期字段)和strftime('%m',dateStart)不起作用


有什么想法吗?

我不明白,答案是你的问题:

select strftime('%m', dateField) as Month ...

如果您正在搜索月份名称,SQLite的核心发行版似乎不支持文本月份名称,我猜您希望以字符串形式获取月份。看起来不是很友好,但你可能明白了重点。只需用变量替换date('now')

select case strftime('%m', date('now')) when '01' then 'January' when '02' then 'Febuary' when '03' then 'March' when '04' then 'April' when '05' then 'May' when '06' then 'June' when '07' then 'July' when '08' then 'August' when '09' then 'September' when '10' then 'October' when '11' then 'November' when '12' then 'December' else '' end
as month 

尝试使用以下方法:

select strftime('%m', datetime(datefield, 'unixepoch')) as month from table
我猜strftime(“%m”,dateStart)不适合您,因为dateStart变量是date/datetime类型

那么您必须使用:

strftime('%m', date(dateStart))

这是一个没有所有case-when语句的解决方案。希望这会有帮助

select substr('JanFebMarAprMayJunJulAugSepOctNovDec', 1 + 3*strftime('%m', date('now')), -3)

这是我的解决方案,对我有效

MONTH_DICT={ "Jan" : '01', "Feb" : '02', "Mar" : '03', "Apr" : '04', "May" : '05', "Jun" : '06', "Jul" : '07', "Aug" : '08', "Sep" : '09', "Oct" : 10, "Nov" : 11, "Dec" : 12 }

self.cursor.execute("SELECT * FROM error_log WHERE strftime('%m',Date_column)=?",(MONTH_DICT[query_month],)) 

print('output:', self.cursor.fetchall())
从表名称中选择strftime(“%m”,datetime\u col)作为“月”


用你的datetime专栏取代“datetime”

这么多年过去了,我想我明白了你的问题所在。 您可能将日期存储为字符串。 这样,当您从中搜索数据时,比如说May,您应该这样编写sql:

从strftime('%m',datefield)='05'的表中选择*


写“05”而不是“5”很重要。使用“5”将不会产生任何结果。

如果datefield是本机datetime类型,则这是不正确的。您需要使用另一个答案中提到的strftime(“%m”,datetime(datefield,'unixepoch')。不幸的是,如果您将datetime值作为整数存储在数据库中,即使这样也会返回none。
MONTH_DICT={ "Jan" : '01', "Feb" : '02', "Mar" : '03', "Apr" : '04', "May" : '05', "Jun" : '06', "Jul" : '07', "Aug" : '08', "Sep" : '09', "Oct" : 10, "Nov" : 11, "Dec" : 12 }

self.cursor.execute("SELECT * FROM error_log WHERE strftime('%m',Date_column)=?",(MONTH_DICT[query_month],)) 

print('output:', self.cursor.fetchall())