生活随笔
收集整理的這篇文章主要介紹了
java format用法_java学习常用函数之日期时间函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
日期時間函數
- DATE_FORMAT(datetime ,fmt)和STR_TO_DATE(str, fmt)所需的日期模板
使用NOW(),SYSDATE(),CURDATE(),CURTIME()獲取當前時間| SELECT CURTIME(),CURDATE(),NOW(),SYSDATE(); |
DATEDIFF(date1,date2) 返回兩個日期之間相差的天數| SELECT DATEDIFF(CURDATE(),’2019-3-1′); — 計算當前日期和2019-3-1之間相差的天數 |
案例: 計算員工表中服務年限大于35年的員工信息,并且按照年薪升序排列
| SELECT EMPNO,ENAME,JOB,HIREDATE, ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) “服務年限”FROM EMPWHERE ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) > 35ORDER BY 服務年限; |
| SELECT EMPNO,ENAME,JOB,HIREDATE, ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) “服務年限”FROM EMPWHERE ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) > 35ORDER BY 服務年限; |
| SELECT EMPNO,ENAME,JOB,HIREDATE, ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) “服務年限”FROM EMPWHERE ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) > 35ORDER BY 服務年限; |
| SELECT EMPNO,ENAME,JOB,HIREDATE, ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) “服務年限”FROM EMPWHERE ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) > 35ORDER BY 服務年限; |
注意:在WHERE子句中無法使用字段別名。這是因為MySql執行語句的順序決定的
上面語句執行的順序是:(1)FROM (2)WHERE (3)SELECT (4)ORDER BY 。中間的每一步都會生成一張虛擬表,后面的步驟都是在上一張虛擬表中進行篩選與查詢的。在執行WHERE子句的時候還沒有字段的別名。但是在執行ORDER BY的時候,字段的別名已經存在了。
我們可以使用如下的方式進行解決(后面我們會詳細講解這種用法)
| SELECT TEMP.*FROM ( SELECT EMPNO,ENAME,JOB,HIREDATE, ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) “服務年限” FROM EMP) TEMPWHERE TEMP.服務年限 > 35; |
| SELECT TEMP.*FROM ( SELECT EMPNO,ENAME,JOB,HIREDATE, ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) “服務年限” FROM EMP) TEMPWHERE TEMP.服務年限 > 35; |
| SELECT TEMP.*FROM ( SELECT EMPNO,ENAME,JOB,HIREDATE, ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) “服務年限” FROM EMP) TEMPWHERE TEMP.服務年限 > 35; |
| SELECT TEMP.*FROM ( SELECT EMPNO,ENAME,JOB,HIREDATE, ROUND(DATEDIFF(SYSDATE(),HIREDATE)/365) “服務年限” FROM EMP) TEMPWHERE TEMP.服務年限 > 35; |
DATE_ADD(datetime, INTERVALE expr type), 返回與給定日期時間相差INTERVAL時間段的日期時間案例: 查詢EMP表中員工的轉正日期
aft-type="table" data-size="normal" data-row-style="normal">
| SELECT EMPNO,ENAME,JOB,HIREDATE 入職日期, DATE_ADD(HIREDATE, INTERVAL 3 MONTH) 轉正日期FROM EMP; |
| SELECT EMPNO,ENAME,JOB,HIREDATE 入職日期, DATE_ADD(HIREDATE, INTERVAL 3 MONTH) 轉正日期FROM EMP; |
STR_TO_DATE(str, fmt) 把一個字符串按照日期模板解析為DATE類型。注意:表示日期的字符串的字符串的格式必須要和模板的格式一致,轉換才能成功| SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1980-12-17′,’%Y-%m-%d’); SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1981/20/2′,’%Y/%d/%m’); |
-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">
| SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1980-12-17′,’%Y-%m-%d’); SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1981/20/2′,’%Y/%d/%m’); |
| SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1980-12-17′,’%Y-%m-%d’); SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1981/20/2′,’%Y/%d/%m’); |
| SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1980-12-17′,’%Y-%m-%d’); SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1981/20/2′,’%Y/%d/%m’); |
-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">
| SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1980-12-17′,’%Y-%m-%d’); SELECT * FROM EMPWHERE HIREDATE = STR_TO_DATE(‘1981/20/2′,’%Y/%d/%m’); |
DATE_FORMAT(datetime ,fmt) 把一個日期類型的數據格式化為特定格式的字符串案例: 查詢員工的信息,把員工的入職日期顯示為”日-月-年”格式
draft-type="table" data-size="normal" data-row-style="normal">
| SELECT EMPNO,ENAME,HIREDATE ‘標準日期’, DATE_FORMAT(HIREDATE,’%d-%m-%Y’) “日期1″FROM EMP ; |
| SELECT EMPNO,ENAME,HIREDATE ‘標準日期’, DATE_FORMAT(HIREDATE,’%d-%m-%Y’) “日期1″FROM EMP ; |
總結
以上是生活随笔為你收集整理的java format用法_java学习常用函数之日期时间函数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。