You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Clarion中重写PostgreSQL时间间隔计算查询?

在Clarion环境中处理PostgreSQL时间间隔的方法及查询重写

Hey there! Let's walk through how to handle PostgreSQL time intervals in Clarion, plus rewrite that specific timestamp difference query to work seamlessly in a Clarion environment.

通用处理思路

When working with PostgreSQL time intervals in Clarion, you've got a couple reliable approaches:

  • 借助Clarion数据库驱动调用PostgreSQL原生函数: Clarion通过ODBC或原生驱动能很好地和PostgreSQL协作,你可以直接执行原生PostgreSQL SQL,再把结果映射到Clarion变量中。
  • 使用Clarion内置的日期时间工具: 如果你想避开数据库专属逻辑,Clarion自带了计算日期时间差的函数——只需要注意格式和单位转换即可。
  • 注意类型映射: 确保Clarion变量类型和PostgreSQL返回的类型匹配,比如PostgreSQL的numeric可以对应Clarion的DECIMAL或FLOAT类型。

目标查询的Clarion兼容重写

你的原PostgreSQL查询是通过将时间间隔转换为epoch秒数,再除以3600来计算两个时间戳的小时差。这里提供两种在Clarion中实现的方式:

方法1:在Clarion中执行原生PostgreSQL SQL

如果你已经通过Clarion的数据库层连接了PostgreSQL,可以直接运行原查询并获取结果。代码示例如下:

PROGRAM
MAP
END

SQLConn LONG
HourDiff DECIMAL(18,2)
SQLQuery STRING(255)

CODE
! 假设已经建立了有效的PostgreSQL连接(SQLConn为连接句柄)
SQLQuery = 'SELECT EXTRACT(EPOCH FROM (TIMESTAMP ''02-01-2021 06:00'' - TIMESTAMP ''01-01-2021 22:00''))/3600 AS interval_as_hours_numeric'

IF SQLExecute(SQLConn, SQLQuery)
    IF SQLFetch(SQLConn)
        ! 将数值结果读取到Clarion的DECIMAL变量中
        SQLGetData(SQLConn, 1, SQL_C_DOUBLE, HourDiff, SIZEOF(HourDiff))
        MESSAGE('时间差(小时): ' & STR(HourDiff, 10, 2))
    END
    SQLCloseCursor(SQLConn)
END

方法2:使用Clarion内置日期时间函数实现

如果你想完全在Clarion内部处理计算(不调用数据库),可以把时间戳转换为Clarion的DATETIME类型,再手动计算差值。注意Clarion的DATETIME差值单位是1/100秒,所以需要调整转换为小时:

PROGRAM
MAP
END

StartDateTime DATETIME
EndDateTime DATETIME
HourDiff DECIMAL(18,2)

CODE
! 将PostgreSQL格式的时间戳转换为Clarion默认的MM/DD/YYYY HH:MM:SS格式
StartDateTime = DATETIME('01/01/2021 22:00:00')
EndDateTime = DATETIME('02/01/2021 06:00:00')

! 计算差值:(1/100秒) / (3600 * 100) = 小时数
HourDiff = (EndDateTime - StartDateTime) / 360000.0
MESSAGE('时间差(小时): ' & STR(HourDiff, 10, 2))

日期格式小提示

Clarion默认使用MM/DD/YYYY日期格式。如果你的输入时间戳是原查询中的DD-MM-YYYY格式,可以用Clarion的ParseDate()函数来转换:

StartDateTime = ParseDate('01-01-2021 22:00', 'DD-MM-YYYY HH:MM')

内容的提问来源于stack exchange,提问作者Matestro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:27:37