[英]Difference between two dates in HSQLDB
使用 HSQLDB 在 Libreoffice Base 中獲得了一個數據庫,其中表Expirations
具有列Item
和Expiry
(日期值)。 我想運行一個查詢,計算ExpiryDate
和當前日期之間的天數,輸出Item
和Days 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.