【发布时间】:2017-05-31 18:31:32
【问题描述】:
我正在调用一个数据库,并返回一个 datetime.datetime 对象作为元组中的第三项。
SQL语句为:SELECT name,name_text,time_received FROM {}.{} WHERE DATE(time_received)=CURRENT_DATE LIMIT 1
如果我执行print(mytuple[2]),它会返回类似:2017-05-31 17:21:19+00:00,但每个值的末尾总是带有“+00:00”。如何从 datetime.datetime 对象中删除尾随的“+00:00”?
我尝试了不同的字符串剥离方法,例如print(mytuple[2][:-6]),但它给了我一个错误,说 datetime.datetime 对象不可下标。感谢您的帮助!
【问题讨论】:
-
您始终可以将输出格式化为选择的一部分。它似乎包括时区偏移量。你只需要从渲染中排除它。
to_char(timestamp, 'YYYY-MM-DD HH24:MM:SS')是一种方式。 postgresql.org/docs/8.2/static/functions-formatting.html 提供了许多其他人。 (在SQL语句的SELECT中完成获取mytuple[2] -
@xQbert 如果我选择多个列,那么
to_char会去哪里,其他列不是时间戳,而是字符串。 -
发布用于获取结果集的 SQL。它应该绕过时间戳列。然后您可以将其别名返回,但这也取决于您希望从数据库中返回的数据类型。如果您想要一个日期/时间,那么我们需要将其转换回适当的数据类型。
-
@xQbert 我添加了我的 SQL 语句。我正在获取值并将其放入 javascript DataTables 列并对其进行排序。我认为数据表仍然将其视为字符串?也许不是,所以最好有一个日期/时间
-
so
SELECT name,name_text,to_char(time_Received, 'YYYY-MM-DD HH24:MM:SS)'...time received (mytuple[2]) 然后将被格式化为字符数据而不是时间。因此,如果您的程序将其作为日期处理,我们必须将其转换回日期数据类型。
标签: sql database python-3.x datetime psycopg2