将 PostgreSql 时间戳查询转换为 MS SQL/Azure SQL

Posted

技术标签:

【中文标题】将 PostgreSql 时间戳查询转换为 MS SQL/Azure SQL【英文标题】:Converting PostgreSql timestamp query to MS SQL/Azure SQL 【发布时间】:2021-12-05 13:22:57 【问题描述】:

我目前正在将一些基本的 sql 脚本从 Postgresql 转换为 Azure Sql。我是 sql 的新手,但我真的无法理解 Azure SQL / SQL Server 中的纪元/unix 时间。我的应用程序使用 bigint 纪元时间作为事件时间戳,我想为数据库和存储事件的表制作一个管家脚本。

您如何在 MS 或 Azure SQL 中处理纪元时间间隔? Azure SQL 中与以下查询等效的是什么?

SELECT count(*) FROM info_event WHERE event_time < (SELECT cast(EXTRACT(epoch FROM current_timestamp - INTERVAL '1 MONTH') AS bigint) * 1000); 

【问题讨论】:

这里有很多如何将日期和时间值转换为纪元的示例;这些例子有什么问题?您对它们有什么不了解或为什么它们不适用于您的场景? 我无法理解如何在 MSSQL 中使用纪元时间间隔 【参考方案1】:

解决办法是。

SELECT * FROM table WHERE epoch_column < (SELECT cast(DATEDIFF(second,'1970-01-01 00:00:00',(DATEADD(month,-1,GETDATE())))AS bigint)* 1000 );

感谢您的帮助!

【讨论】:

以上是关于将 PostgreSql 时间戳查询转换为 MS SQL/Azure SQL的主要内容,如果未能解决你的问题,请参考以下文章

JasperReports 未将 postgresql 时间戳转换为简单日期

PostgresQL + Spring JPA:org.postgresql.util.PSQLException:错误:无法将类型 bytea 转换为没有时区的时间戳

PostgreSQL:将字符串转换为没有时区的时间戳以更改时间日期时,我得到了意想不到的结果

使用postgresql格式化时间戳和数字的两个问题

Qt 时间戳从 Epoch(1970) 到 2000 年开始的 Postgresql 时间戳。如何添加偏移量并将毫秒转换为微秒?

PostgreSQL 错误地从没有时区的时间戳转换为有时区的时间戳