簡體   English   中英

HSQLDB中兩個日期之間的差異

[英]Difference between two dates in HSQLDB

使用 HSQLDB 在 Libreoffice Base 中獲得了一個數據庫,其中表Expirations具有列ItemExpiry (日期值)。 我想運行一個查詢,計算ExpiryDate和當前日期之間的天數,輸出ItemDays Remaining ,以整天表示。

由於我是 SQL 的新手,我並不感到驚訝,因為我最初的幾次嘗試給了我語法錯誤。 希望有人能指出我哪里出錯了:

SELECT DATEDIFF (DAY, CURRENT_DATE, "Expiry") AS "Days Remaining" FROM "Expirations"

我認為這與首先必須 select 表中的所有條目有關。 也許是SELECT * 如果是這樣,不確定如何將其鏈接到DATEDIFF段。 SELECT * WHERE DATEDIFF...也會引發語法錯誤。

如果您在 LO Base 中使用嵌入式 HSQLDB,那么它是 1.8 版。 來自http://www.hsqldb.org/doc/1.8/guide/guide.html

DATEDIFF(字符串,日期時間 1,日期時間 2)

返回從 datetime1 到 datetime2 所用時間單位的計數。 字符串表示時間單位,可以有以下值 'ms'='millisecond', 'ss'='second','mi'='minute','hh'='hour', 'dd'='日','mm'='月','yy'='年'。 字符串的長格式和短格式都可以使用。

所以參數可以是字符串'dd''day'

SELECT DATEDIFF ('day', CURRENT_DATE, "Expiry") AS "Days Remaining" FROM "Expirations"

好的,所以https://www.hsqldb.org/doc/2.0/guide/builtinfunctions-chapt.html說:

DATEDIFF ( <field>, <datetime value expr 1>, <datetime value expr 2> )
<field> ::= 'yy' | 'year' | 'mm' | 'month' | 'dd' | 'day' | 'hh' | 'hour' | 'mi' | 'minute' | 'ss' | 'second' | 'ms' | 'millisecond'
<field> ::= YY | YEAR | MM | MONTH | DD | DAY | HH | HOUR | MI | MINUTE | SS | SECOND | MS | MILLISECOND

這意味着您可以互換使用DAY'day' - 但它對我不起作用 - 唯一對我有用的是'day'

sql> SELECT DATEDIFF(DAY, CURRENT_DATE, TIMESTAMP '2022-09-22 20:30:40') FROM (VALUES(0));
SEVERE  SQL Error at '<stdin>' line 1:
"SELECT DATEDIFF(DAY, CURRENT_DATE, TIMESTAMP '2022-09-22 20:30:40') FROM (VALUES(0))"
user lacks privilege or object not found: DAY

sql> SELECT DATEDIFF(day, CURRENT_DATE, TIMESTAMP '2022-09-22 20:30:40') FROM (VALUES(0));
SEVERE  SQL Error at '<stdin>' line 2:
"SELECT DATEDIFF(day, CURRENT_DATE, TIMESTAMP '2022-09-22 20:30:40') FROM (VALUES(0))"
user lacks privilege or object not found: DAY

sql> SELECT DATEDIFF('day', CURRENT_DATE, TIMESTAMP '2022-09-22 20:30:40') FROM (VALUES(0));
16

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM