แปลงค่า Unix timestamp เป็น timestamp ใน Redshift

ในกรณีที่เราโหลดข้อมูลมาแล้วเป็นประมาณนี้

ts
1541106132796
1541107493796
1541109015796

ชนิดข้อมูลอาจจะเป็น BIGINT ทีนี้วิธีการแปลงให้เป็น timestamp เราสามารถใช้ query ได้ตามนี้

SELECT TIMESTAMP 'epoch' + ts * interval '1 second' AS new_ts
from a_table

เราก็จะได้ฟิลด์ที่ชื่อ new_ts ที่เป็นชนิด TIMESTAMP มาเรียบร้อย

หรือว่าในจังหวะที่เราโหลดข้อมูลเลย เช่น จาก S3 เราสามารถเขียนคำสั่ง COPY ได้ตามนี้

COPY my_table FROM 's3://somehwere/data'
CREDENTIALS 'aws_iam_role=arn:aws:iam::xxx:role/myRedshiftRole'
TIMEFORMAT 'epochmillisecs'
REGION 'us-west-2'

ตรง TIMEFORMAT จะเป็นการบอกว่าข้อมูลที่จะเข้ามาในฟิดล์ที่เป็น TIMESTAMP มันเป็นหน่วย milliseconds อยู่นะ ให้แปลงค่าด้วย

Reference: Data conversion parameters - Amazon Redshift