Max*_*Max 43 python postgresql datetime
我需要在PG中插入一行,其中一个字段是带时间戳的日期和时间,这是事件发生的时间,所以我不能在插入时使用Postgres的 - > current_timestamp函数,那我怎么能插入我在进入pg行之前收集的时间和日期,其格式与current_timestamp在该时间点创建的格式相同.
a_h*_*ame 65
时间戳没有"格式".
处理时间戳的推荐方法是使用PreparedStatement,您只需在SQL中传递占位符,并通过编程语言的API传递"真实"对象.由于我不懂Python,我不知道它是否支持PreparedStatements以及它的语法.
如果要将时间戳文字放入生成的SQL中,则在指定值时需要遵循一些格式规则(文字确实具有格式).
Ivan的方法会起作用,虽然我不确定它是否依赖于PostgreSQL服务器的配置.
用于指定时间戳文字的配置(和语言)独立解决方案是ANSI SQL标准:
INSERT INTO some_table
(ts_column)
VALUES
(TIMESTAMP '2011-05-16 15:36:38');
Run Code Online (Sandbox Code Playgroud)
是的,这是关键字,TIMESTAMP后跟以ISO样式格式化的时间戳(TIMESTAMP关键字定义该格式)
另一种解决方案是使用to_timestamp()函数,您可以在其中指定输入文字的格式.
INSERT INTO some_table
(ts_column)
VALUES
(to_timestamp('16-05-2011 15:36:38', 'dd-mm-yyyy hh24:mi:ss'));
Run Code Online (Sandbox Code Playgroud)
Eug*_*ash 37
如果您使用psycopg2(可能还有其他一些客户端库),您只需将Python datetime对象作为参数传递给SQL查询:
from datetime import datetime
dt = datetime.now()
cur.execute('INSERT INTO some_table (somecol) VALUES (%s)', (dt,))
Run Code Online (Sandbox Code Playgroud)
这里列出了更多可以适应SQL的Python类型(并在执行查询时作为Python对象返回).
只需使用'现在'
http://www.postgresql.org/docs/8.0/static/datatype-datetime.html
| 归档时间: |
|
| 查看次数: |
135469 次 |
| 最近记录: |