在 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
所以我有一个问题,我一直在狂热地尝试开始工作,我觉得这应该很容易,但我错了。
我有两个字段要与系统日期相比较不到两小时。所以基本上过去两个小时发生的一切。 日期是日期数据类型,但时间是文本数据类型。
这是我尝试执行它的多种方式之一的示例;
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