繁体   English   中英

如何比较sql脚本中的日期以进度数据库?

[英]How to compare dates in a sql script to progress database?

我们的进度数据库中有一个字段为DATETIME-TZ,因此数据示例为“ 23/05/2019 12:11:16.099”-我需要一些帮助来比较此字段中的日期与SQL select语句

在进行过程编辑器中,我可以轻松比较日期,例如

从accadd中选择日期(bond-no),其中date(bond-no)<=今天

这完美地工作,但是我需要通过sql来获取网页的此信息,并且只会收到错误,甚至将字段分解为子字符串并备份日期似乎也不起作用

SELECT date(“” bond-no“”)FROM accadd WHERE date(“” bond-no“”“)<= Date()

尝试了上述变化,这也...

DATE(SUBSTRING( “” 键的无 “”,4,2),SUBSTRING( “” 键的无 “”,1,2),SUBSTRING( “” 键的无 “”,7,4))

这应该只返回比今天早的日期,但只会得到旧的语法错误消息,因此我在某处丢失了某些内容

[DataDirect] [ODBC Progress OpenEdge Wire Protocol驱动程序] [OPENEDGE] SQL语句中“] FROM accadd WHERE”附近的语法错误(10713)

在PDSOE中使用在日期时间(无-tz)字段上使用JDBC的SQL编辑器:

SELECT "bond-no" FROM pub.accadd WHERE "bond-no" <= CURDATE()

要使用静态日期:

SELECT "bond-no" FROM pub.accadd WHERE "bond-no" <= TO_DATE('5/31/2019')

要么:

SELECT "bond-no" FROM pub.accadd WHERE "bond-no" <= { d'5/31/2019' }

您确实需要用引号引起来,因为它包含一个破折号,但是您的示例代码将双引号引起来。 你有没有尝试过:

SELECT date("bond-no") FROM accadd WHERE date("bond-no") <= Date()

我不确定为什么要这样做,但我认为您不需要在“ bond-no”周围使用DATE()函数。 DATE()是一个4gl函数,因此当您在“过程编辑器”中并使用嵌入式SQL时,它可以工作,但OpenEdge SQL92引擎没有DATE()函数。 但是,有一个TO_DATE()函数: https : //documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/dmsrf%2Fto-date.html%23wwID0EXIOS

以下内容适用于sports2000数据库和sqlexp(而不是过程编辑器中的嵌入式sql):

select * from pub.order where orderdate < '1/1/1999'

我还添加了一个名为“ tstamp”的datetime-tz字段,对其进行了初始化并尝试如下进行操作:

select tstamp from pub.order where tstamp < '1/1/1999'

效果也不错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM