2013-04-07 154 views
3

我使用Flask在页面上显示日期和温度。数据存储在SQLite数据库中。它与字符串的日期和时间很好,但我试图将日期和时间转换为unix时代时遇到了问题。从字符串到字符串unixepoch的日期转换

Python代码:

cur = db.execute('select date,temperature from temperatures where temperatures.date > datetime(\'now\',\'-1hour\', \'localtime\') order by date desc;') 
entries = cur.fetchall() 
return render_template('dashboard2.html', entries=entries) 

模板:

{% for entry in entries %} 
{{ entry.date }} --- {{ entry.temperature }} 
{% endfor %} 

结果是:

2013-04-08 21:26:22 --- 22.31 

我想要做的事:

sqlite> select strftime('%s',date),temperature from temperatures where temperatures.date > datetime('now','-1hour', 'localtime') order by date desc; 

给出(SQLite中控制台):

(...) 
1365340231|22.56 
1365340221|22.56 
1365340210|22.5 
1365340199|22.56 
(...) 

但:

cur = db.execute('select strftime(\'%s\',date),temperature from temperatures where temperatures.date > datetime(\'now\',\'-1hour\', \'localtime\') order by date desc;') 

这个选择给出烧瓶中entry.temperature在entry.date空值和预期值模板:

--- 22.31 

我在下面发布了解决方案。

+2

无关:请记住,您可以互换使用两种引用。如果你使用'“”'来编写SQL查询,你不必转义引号。 – liori 2013-04-07 16:55:58

+1

哪个版本的SQLite是这样的?使用'-1hour'修饰符(在数字和'小时之间没有空格)我使用'datetime()'函数获得'NULL',而使用'-1 hour'返回一个日期。我正在使用SQLite 3.7.16。 – 2013-04-07 18:38:04

+0

@AudriusKažukauskasSQLite 3.6.22。朋友已经帮我解决问题了。看起来我在解释问题时犯了一些错误。我会尽力修复它。 – 2013-04-08 19:28:43

回答

1

OK,朋友帮我找到的错误:

问题是,我试图用价值entry.date在我的模板,但但没有与日期条目相关联。

解决方案:“strftime('%s',date)as date,temperature ...”,然后将strftime的结果放入entries.date中。