SQLLite-在python中进行类型转换

时间:2018-11-05 12:27:09

标签: python python-3.x python-2.7 sqlite

我是python的新手。 我将表数据从AWS Redshift移至内存中的sqllite数据库中 python。

请参考下面的表格结构:

红移表:

s0 1

我在上一栏中的值字段为Redshift时的十进制。

当我尝试将数据导入sqllite时,我发现从Redshift获得的结果中包含Decimal关键字,因此我无法将其插入到sqllite表中,该表也已标记为如十进制(这是我先前提出的同一问题的link)。因此我将数据类型更改为varchar(30),以便我的值可以适合sqllite表。

请参考下面的表结构以获取我的内存中sqllite表:

在内存sqllite表中

enter image description here

现在,我想在我的python脚本中基于时间戳来计算列值的总和,但是我无法获得预期的结果。

这是我在Redshift中使用的查询以获取总和,并且正在获得预期的输出:

select sum(value) from table where id = 9831 and item_date = '2018-11-01' and to_char(item_datetime, 'HH24MI') between '0000' and '2359';

这是我在脚本中使用的查询,用于将值列类型转换为decimal,并将item_datetime转换为strftime,以获取所需的输出:

select sum(CAST(value as decimal)) from table where id = 9831 and item_date = '2018-11-01' and strftime(item_datetime, 'HH24MI') between '0000' and '2359';

但是我得到的输出为None。 云有人向我解释了这种行为,我在这里做错了什么? 该如何处理?

1 个答案:

答案 0 :(得分:1)

在SQLite中,它是这样的:

... AND STRFTIME('%H%M', item_datetime) BETWEEN '0000' AND '2359'

有关更多信息,请参见docs