วิธีแปลงเวลา unix เป็น Timstamp ของ PostgreSQL โดยไม่มี timezome


17

ฉันมีฐานข้อมูล PostgreSQL ทำงานบนเซิร์ฟเวอร์ที่ตั้งค่าเขตเวลาเป็นโซนเวลาของอินเดีย (เช่น UTC +5: 30)

ฉันมีข้อมูลบางอย่างในตารางที่สร้างเช่นนี้

CREATE TABLE "CLOUDDATA"
(
  "CD_Tm_Obs" timestamp without time zone,
  "CD_Avg_Cloud" double precision
)

ฉันต้องการสืบค้นข้อมูลและรับค่าตามเวลาที่กำหนด อินพุตของฉันจะเป็น Unix Timestamp (เช่นวินาทีจาก 1 มกราคม 1970)

select to_timestamp(TRUNC(CAST(1395036000 AS bigint)))วิธีเดียวของการแปลงเวลายูนิกซ์การประทับเวลาที่ฉันได้พบคือ: แต่สิ่งนี้สร้างการประทับเวลาด้วยเขตเวลา ข้อมูลของฉันอยู่ในtimestamp without time zoneดังนั้นฉันไม่ได้รับผลลัพธ์ใด ๆ

วิธีการแปลงเวลา unix เป็น Timstamp ของ PostgreSQL โดยไม่มี timezome?

คำตอบ:


37

นี่คือแนวทางสองสามข้อ:

ฉันได้ง่ายการค้นหาของคุณในขณะที่คุณไม่ควรต้องและไม่TRUNC()CAST()

SELECT to_timestamp(1395036000) AT TIME ZONE 'UTC';

SELECT timestamp '1970-01-01 00:00:00' + interval '1395036000 second';

สำหรับการอ้างอิงข้อมูลเพิ่มเติมสามารถดูได้ที่ลิงค์ต่อไปนี้:


ตัวอย่างที่สองทำงานได้กับ RedShift
Gianluca Casati
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.