我需要將行插入PG的領域之一是日期和時間與時間戳插入CURRENT_TIMESTAMP於Postgres,這是事件發生的時間,所以我不能使用 - 在> CURRENT_TIMESTAMP的Postgres的功能插入的時間,那麼我該如何將我以前收集的時間和日期插入到pg行中,格式與當前時間戳由current_timestamp創建的格式相同。如何通過Python
回答
時間戳不具有 「格式」。
推薦的方法來處理時間戳是使用PreparedStatement,你只是通過在SQL的佔位符,並通過您的編程語言的API傳遞一個「真實」的對象。由於我不知道Python,我不知道它是否支持PreparedStatements以及它的語法。
如果你想要把文字時間戳到您生成的SQL,則需要指定值(文字確實有一個格式)時應該遵循的一些格式規則。
伊萬的方法將工作,雖然我不是100%肯定,如果它取決於PostgreSQL服務器的配置。
的配置(和語言)獨立的解決方案來指定一個時間戳文字是ANSI SQL標準:
INSERT INTO some_table
(ts_column)
VALUES
(TIMESTAMP '2011-05-16 15:36:38');
是的,其次是在ISO樣式設置格式的時間戳關鍵字TIMESTAMP
(在TIMESTAMP
關鍵字定義格式)
其他的解決辦法是使用to_timestamp()
功能,在這裏你可以指定輸入文本的格式。
INSERT INTO some_table
(ts_column)
VALUES
(to_timestamp('16-05-2011 15:36:38', 'dd-mm-yyyy hh24:mi:ss'));
當然,只需以格式:'2011-05-16 15:36:38'
(您也可以在那裏附加一個時區,如'PST'
)傳遞該時間戳列的字符串值。 PostgreSQL會自動將字符串轉換爲時間戳。見http://www.postgresql.org/docs/9.0/static/datatype-datetime.html#DATATYPE-DATETIME-INPUT
'now'是完全一樣'current_timestamp' – 2011-05-16 14:51:14
完全一樣,不同的是它不會引發錯誤。 – anthropomo 2014-02-21 17:02:16
OP明確詢問了如何通過Python *來實現這一點。 – 2015-10-06 14:05:20
日期和時間的輸入接受幾乎任何合理的格式,包括 ISO 8601,SQL兼容的,傳統Postgres的和其他。 對於某些格式,日期輸入中月份,日期和年份的排序爲 含糊不清,並且有支持指定這些字段的預期排序 。
換句話說:只寫任何東西,它會工作。
或檢查this table與所有明確的格式。
只需使用
現在()
或
CURRENT_TIMESTAMP
我更喜歡後者,因爲我喜歡沒有額外的括號但是那只是個人偏愛。
該問題明確指出,「我不能在插入時使用 - > current_timestamp函數Postgres。 – 2013-09-04 22:19:31
如果使用psycopg2
(可能還有一些其它的客戶端庫),你可以簡單地通過一個Python datetime
對象作爲parameter到SQL查詢:
from datetime import datetime
dt = datetime.now()
cur.execute('INSERT INTO some_table (somecol) VALUES (%s)', (dt,))
更多的Python類型可以改編成SQL (並在執行查詢時作爲Python對象返回)列出here。
您應該避免傳遞一個表示當地時間的樸素日期時間對象:它可能不明確,並且數據庫連接可能使用不同的時區。使用'datetime.now(timezone.utc)'等有意識的日期時間對象,並確保在數據庫端使用「帶時區的時間戳」。 – jfs 2015-10-06 16:35:00
你可以試試這個,
from datetime import datetime as dt
then use this in your code:
cur.execute('INSERT INTO my_table (dt_col) VALUES (%s)', (dt.now(),))
- 1. 如何通過Python
- 2. 如何通過Python
- 3. 如何通過Python
- 4. 如何通過Python
- 5. 如何通過Python
- 6. 如何通過Python
- 7. 如何通過couchdb-python
- 8. 的Python:如何通過RQ
- 9. 如何通過Python類環
- 10. 如何通過使用Python
- 11. 的Python:如何通過sm.Logit
- 12. 如何通過Python的
- 13. 如何正確地通過python-urllib2通過HTTP下載文件?
- 14. 我該如何通過self.selected(i)? - Python
- 15. 我如何通過使用python
- 16. Python:複製時如何通過文件
- 17. 如何通過零誤差在python
- 18. 如何通過使用pyodbc在Python
- 19. 我如何通過使用Python
- 20. 如何通過pycharm使用markdown for python?
- 21. 如何通過中斷在python
- 22. 如何阻止mplayer通過python播放
- 23. 如何通過python執行shell腳本
- 24. 我如何通過使用python-libtorrent
- 25. Python,如何通過TCP發送數據
- 26. 我如何通過使用Python
- 27. 如何通過lxml.etree使用Python類名
- 28. 如何通過python解析sql文件?
- 29. 如何通過Python args和kwargs?
- 30. 如何通過python來計算PESQ?
謝謝 - > format('Y-m-d H:i:s');正在爲我工作。 – 2018-02-28 21:33:39