在 Power BI 中的 Progress Open edge SQL 语句中组合日期字段和时间字段

Combining a date field and a time field in Progress Open edge SQL statement within Power BI

所以我有一个问题,我一直在狂热地尝试开始工作,我觉得这应该很容易,但我错了。

我有两个字段要与系统日期相比较不到两小时。所以基本上过去两个小时发生的一切。 日期是日期数据类型,但时间是文本数据类型。

这是我尝试执行它的多种方式之一的示例;

SELECT *
FROM 
   ExampleTable
WHERE
   TO_DATE( DateField || ' ' || TimeField ) >= sysdate -(2/24)

我也尝试过转换 TO_DATE() 中的每个字段,只转换时间,使用 TO_DATE 和 TO_TIMESTAMP 转换所有字段和 sysdate 等等变化。所有输出都会抛出数据类型不一致的错误。

如果可以请帮忙!

我手头没有作为字符字段的 TimeField。在 OpenEdge 环境中,规范是将时间存储为整数(午夜后的秒数),然后以所需的格式显示它:string( TimeField, "HH:MM:SS" ).

如果是整数可以使用下面的SQL.

SELECT *
FROM ExampleTable
WHERE TIMESTAMPDIFF( SQL_TSI_HOUR, TIMESTAMPADD( SQL_TSI_SECOND, TimeField, DateField ), NOW() ) <= 2

如果您的 TimeField 确实是一个字符字段,那么您可以使用:

SELECT *
FROM ExampleTable
WHERE 
  TIMESTAMPDIFF( 
    SQL_TSI_HOUR, 
    TO_TIMESTAMP( CONCAT( CONCAT( TO_CHAR( DateField ), ' ' ), TimeField ) ),
    NOW()
   ) <= 2

但由于这看起来将是一个完整的 table 扫描,您可能需要添加一个普通的 where 子句以将结果限制为最近两天。

AND DateField > CURDATE() - 2