[英]Oracle SQL Developer - Dates sorted incorrectly(?)
我有一個簡單的查詢,它應該按von
列的降序排列結果。 該列的數據類型為DATE
。 這是一個 Oracle 數據庫,我在執行查詢時使用 Oracle SQL 開發人員。
這是我正在執行的查詢:
select *
from billinginterval
where id = xxxx or id = yyyy
order by von desc;
這是我為此查詢得到的兩個結果:
如果我錯了,請糾正我,但結果不應該以相反的順序出現嗎? 當我執行這個查詢時
select von
from billinginterval
order by von desc;
結果集的順序似乎正確。
任何幫助理解這一點將不勝感激!
顯然,由於數據庫中的插入不正確,結果被顛倒了。 自從
select to_char(von, 'DD-MM-YYYY') from verrechnungszeitraum where id = xxxx;
結果返回 01-01-0019。 然而,其他行會產生適當的年份。 關閉。
如果你有數據:
CREATE TABLE billinginterval (id, von) AS
SELECT 1, DATE '2018-09-01' FROM DUAL;
INSERT INTO billinginterval (id, von)
VALUES (3, TO_DATE('03.01.1919', 'DD.MM.YYYY'));
INSERT INTO billinginterval (id, von)
VALUES (3, TO_DATE('03.01.19', 'DD.MM.YYYY'));
並使用以下命令設置 session:
ALTER SESSION SET NLS_TERRITORY = 'Germany';
然后查詢:
select b.*,
TO_CHAR(von, 'YYYY-MM-DD') AS formatted_von
from billinginterval b
order by von desc;
請問output:
ID 馮 FORMATTED_VON 1 01.09.18 2018-09-01 2 03.01.19 1919-01-03 3 03.01.19 0019-01-03
id
為 2 的行可能是有效數據,應該按這個順序排列; 但是, id
為 3 的行可能無效,並且有人使用了INSERT
,例如:
INSERT INTO billinginterval (id, von)
VALUES (3, TO_DATE('03.01.19', 'DD.MM.YYYY'))
哪個數據庫的年份是0019
而不是2019
。 您應始終確保您的數據輸入與預期格式匹配,並且在預期為四位數年份時不要提供兩位數年份。
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.