[英]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.