回答
這是一個簡單的問題,但有一個大捕捉到它。
是否可以申請MIN
到目前爲止的專欄?
- 是的,你可以。
這是正確的方法MIN(TO_DATE(Person.birthday, 'DD-Mon-YY'))
?
- 號,您應該使用
MIN(Person.birthday)
如果列已經是DATE
類型,你不應該使用TO_DATE
作爲 ORACLE隱式轉換它再次轉換。
下面是一個例子,爲什麼 -
DATA -
+-------+--------+-----------+------+-------------+------+------+--------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
+-------+--------+-----------+------+-------------+------+------+--------+
| 7369 | SMITH | CLERK | 7902 | 17/Dec/1980 | 800 | | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 20/Feb/1981 | 1600 | 300 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 22/Feb/1981 | 1250 | 500 | 30 |
+-------+--------+-----------+------+-------------+------+------+--------+
查詢1
select MIN(TO_DATE(hiredate, 'DD-Mon-YY')) from emp;
結果1
17/12/2080
QUERY 2
select MIN(hiredate) from emp;
結果2
17/12/1980
正如你可以看到世紀搞砸了,當你在查詢1.使用TO_DATE
功能然而結果與QUERY 2中的預期相同
如果一定必須使用
TO_DATE
功能,我建議你 使用DD-Mon-RR
格式,因爲它需要的世紀 不匹配的照顧。 這個格式是在Y2K年的問題(Millennium錯誤)出現時創建的。不過,我仍然不會建議去做。
編輯1:
我不知道如何Person.birthday
是一個有效的列名。任何人都可以啓發我嗎?
to_date()的錯誤用法可能不僅僅是返回無效數據,也可能導致錯誤。在我的電腦上,當使用'MIN(TO_DATE(hiredate,'DD-Mon-YY'))'時,我得到了「* ORA-01843:不是有效的月份*」,因爲我的'NLS_DATE_FORMAT'是**不** ** DD- MON-YY' –
@a_horse_with_no_name我完全同意。 'TO_DATE'只是不適用於'DATE'列。它是爲了將字符串轉換爲日期而創建的。 –
...來自人
- 1. 在日期字段
- 2. 在日期字段上使用FTSearch
- 3. 如何篩選日期時間字段上的日期,日期?
- 4. 在MIN日期和MIN日期+ 11個月之間進行選擇 - MySQL
- 5. 在未輸入日期的日期字段上過濾
- 6. 在日期時間字段上隱藏日期部分
- 7. 在MSSQL「日期」字段
- 8. 日期字段在SQL
- 9. cjuidatepicker限制在第二日期字段日期基於在第一日期字段YII所選日期
- 10. 將日期文本字段設置爲數字日期字段
- 11. 空日期字段
- 12. 日期型字段
- 13. 在單行有關MIN(日期)和MAX(日期)檢索列值
- 14. 更新YEAR上日期字段
- 15. 計算日期字段上的操作
- 16. 不驗證MVC上的日期字段
- 17. 日期字段上的數據質量
- 18. 日期字段給上驗證
- 19. 分配日期輸入日期字段
- 20. Solr日期字段tdate vs日期?
- 21. Postgres日期時間字段上日期的唯一索引
- 22. 將日期字段轉換爲僅日期字段
- 23. Swagger日期字段與日期時間字段
- 24. 在不同的列值上使用MIN(日期)獲取行
- 25. 更新字段,其中一個日期字段小於其他日期字段
- 26. 如何從日期時間字段中刪除日期部分字段在sql
- 27. 在日期時間字段上存儲唯一日期的最佳方法?
- 28. 在Pl/SQL上更新日期時間字段的唯一日期
- 29. 多日期選擇器在同一頁面上顯示總日期字段
- 30. 的UIDatePicker min和max日期不改變
當然,你爲什麼不簡單嘗試呢? – dnoeth
如果它已經是日期字段,只需使用'MIN(person.birthday)' –
列,而不是字段... – jarlh