mysql - 使用 SQL 选择动态 Unix 纪元时间

标签 mysql sql datetime unix amazon-redshift

我正在尝试为用户应用程序构建“最近 30 天”动态 SQL 日期过滤器。日期列是 unix 纪元毫秒时间戳。

该工具的先前版本允许用户选择日期范围,我现在只是将其更改为选择最后 30 个日期范围。

数据存储在 Redshift 中,不支持 from_unixtime

我有两个挑战:

  1. 数据以 UTC 格式存储,需要使用 EST (UTC -5) 中的日期进行过滤。
  2. “选择最近 30 天”是指以昨天午夜为截止点,并以昨天减去 29。

以前,我的代码如下所示:

"datecol" >= DATEDIFF(millisecs, '1969-12-31 19:00:00', ''start date' 00:00:00') 
AND "datecol" <= DATEDIFF(millisecs, '1969-12-31 19:00:00', ''end date' 23:59:59')

应用程序将按照用户的描述更新开始和结束日期。该代码针对时差进行了调整。

如何使用 Redshift SQL 的约束在 Unix 时间戳上使用 GETDATE()DATEADD()

谢谢。

最佳答案

extract('epoch' from ts) 为您提供 unix 时间戳,您只需添加 5 小时即可查询 UTC,就像它是 EST 一样(如果 EST 是 UTC-5,则 UTC 是 EST+5)

between extract('epoch' from ('<<date1>>' + interval '5 hour'))
and extract('epoch' from ('<<date2>>' + interval '29 hour' - interval '1 second'))

此外,from_unixtime 可以在 Redshift 中表示如下:

select timestamp 'epoch' + unix_ts_column * interval '1 second'

有点难看,但工作原理就是这样

关于mysql - 使用 SQL 选择动态 Unix 纪元时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46059477/

相关文章:

mysql - 选择特定字段的值超过同一字段最大值一半的行

javascript - 如何告诉 JavaScript Date 从哪里获取 TimezoneOffset?

mysql - 如何使我的查询正常工作(查询多个表)

mysql - 批处理文件创建用户,然后用mysql分配权限

mysql - 在 Yii 中设置时区

php - 更新 tinyint(1)

sql - 当使用多个远程 fdw 源进行插入时,Postgres BIGSERIAL 不共享序列

Mysql 函数获取某个范围内的可用单位

c# - 如何在参数化查询中将字符串作为日期时间值传递

php - JQuery:无法将值传递给选择查询