簡體   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