欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java開發(fā)之SQL語句中DATE_FORMAT函數(shù)舉例詳解

 更新時間:2024年05月22日 09:29:47   作者:量子矩陣是實現(xiàn)觸碰四維空間基本算法  
要將日期值格式化為特定格式,請使用DATE_FORMAT函數(shù),下面這篇文章主要給大家介紹了關于java開發(fā)之SQL語句中DATE_FORMAT函數(shù)的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

引言:

實際上在使用Java開發(fā)過程中,有很多業(yè)務場景下,都有時間類型的參數(shù)參與。前后端進行交互的時候,針對時間類型的格式都會做一個業(yè)務上的統(tǒng)一,方便開發(fā)且增加效率。關于后端的邏輯有兩個層面可以進行優(yōu)化,一個是底層sql方面,一個是業(yè)務層方面,這兩者之間的處理都可以影響整個業(yè)務方法的響應時間。本次分享在sql層面使用DATE_FORMAT 函數(shù) 對時間類型數(shù)據(jù)的處理

1、簡單介紹:

DATE_FORMAT 是 SQL 中的一個函數(shù),用于將日期或時間格式化為指定的格式,以下是sql形式的格式

DATE_FORMAT(date, format)

其中:

  • date 是要格式化的日期或時間。
  • format 是你希望得到的輸出格式。

2、舉例

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');

常見的格式化選項有:

%Y 年份,四位數(shù)
%y 年份,兩位數(shù)
%m 月份,兩位數(shù)
%d 日期,兩位數(shù)
%H 小時,24小時制,兩位數(shù)
%h 小時,12小時制,兩位數(shù)
%i 分鐘,兩位數(shù)
%s 秒,兩位數(shù)
%p AM/PM

例子中,把時間轉化為 年月日格式,和電腦右下角的日期是相同的,那么針對Java中的傳參怎么應用呢,以下:

@Data
public class AITimeDatePlay {

	@DateTimeFormat(
			pattern = "yyyy-MM-dd HH:mm:ss"
	)
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date testTime;
}

代碼中僅有一個字段,該字段上貼有2個注解,插個題外話,大概解釋一下:

@DateTimeFormat :當前端丟給后端時間參數(shù)的時候,這個注解就將參數(shù)中的時間類型的樣式轉為我們設置的在該注解中的pattern一樣。

@JsonFormat:當后端丟給前端的結果是json模式時(一般都是json),該注解會把后端結果中的時間類型參數(shù)轉為我們在該注解中設置的pattern 一樣。注意:需要添加時區(qū)(timezone)

重點是無論怎么丟參數(shù),丟的都是Date類型,現(xiàn)在 使用sql 中 DATE_FORMAT 函數(shù)來參與業(yè)務

List<EmployeeInfo> queryInfomationByTime(AITimeDatePlay dto);

最終查詢sql

<select id="queryInfomationByTime" resultType="com.bonade.hrm.foundation.model.EmployeeInfo">
        select *
        from employee_info ei
        where date_format(ei.initiation_time,'%Y-%m-%d') = DATE_FORMAT(#{testTime},'%Y-%m-%d')
    </select>

也可以當作字段返回,如下:

select date_format(ei.initiation_time,'%Y-%m-%d') as bigTime
        from employee_info ei
        where date_format(ei.initiation_time,'%Y-%m-%d') = DATE_FORMAT(#{testTime},'%Y-%m-%d')

也可以按照需求,只精確到年月

select date_format(ei.initiation_time,'%Y-%m') as bigTime
        from employee_info ei
        where date_format(ei.initiation_time,'%Y-%m') = DATE_FORMAT(#{testTime},'%Y-%m')

也可以輸入首、尾時間,取數(shù)據(jù)庫中某個時間單位是否在輸入的時間段之中

select date_format(ei.initiation_time,'%Y-%m') as bigTime
        from employee_info ei
        where (
            ((DATE_FORMAT( ei.initiation_time, '%Y-%m' )) BETWEEN  #{startTime} AND #{endTime})
            OR (( DATE_FORMAT( ei.leave_time, '%Y-%m' )) BETWEEN  #{startTime} AND #{endTime})
            )

startTime 為傳入的開始時間參數(shù),endTime 為傳入的結束時間參數(shù),這二者之間的時間段可以作為一個篩選條件,若該二者時間格式也需要調整,那么如下:

select date_format(ei.initiation_time,'%Y-%m') as bigTime
        from employee_info ei
        where (
            ((DATE_FORMAT( ei.initiation_time, '%Y-%m' )) BETWEEN  DATE_FORMAT(#{startTime},'%Y-%m') AND DATE_FORMAT(#{endTime},'%Y-%m'))
            OR (( DATE_FORMAT( ei.leave_time, '%Y-%m' )) BETWEEN  DATE_FORMAT(#{startTime},'%Y-%m') AND DATE_FORMAT(#{endTime},'%Y-%m'))
            )

以上則是分享的DATE_FORMAT函數(shù)的簡單使用。

附:計算輸入的日期的差值

SimpleDateFormat date = new SimpleDateFormat("yyyy年MM月dd日");
? ? ? ? Date date1 = new Date();

? ? ? ? Date date2 = date.parse("2020年1月1日");
? ? ? ? System.out.println((date1.getTime()-date2.getTime())/1000/3600/24+"天");

結果:我目前的時間距離2020年1月1日有223天。

注意:這里可能存在1天的誤差。

總結

到此這篇關于java開發(fā)之SQL語句中DATE_FORMAT函數(shù)舉例詳解的文章就介紹到這了,更多相關SQL DATE_FORMAT函數(shù)詳解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Springboot集成graylog及配置過程解析

    Springboot集成graylog及配置過程解析

    這篇文章主要介紹了Springboot集成graylog及配置過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • eclipse啟動tomcat無法訪問的解決方法

    eclipse啟動tomcat無法訪問的解決方法

    這篇文章介紹了eclipse啟動tomcat無法訪問的解決方法,有需要的朋友可以參考一下
    2013-10-10
  • java返回的List進行add操作報錯

    java返回的List進行add操作報錯

    本文主要介紹了java返回的List進行add操作報錯,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Java數(shù)組判斷是否越界的示例代碼

    Java數(shù)組判斷是否越界的示例代碼

    在Java編程中,避免數(shù)組越界是十分重要的,本文介紹了兩種常見的判斷數(shù)組是否越界的方法:一是通過數(shù)組的length屬性來判斷索引是否合法;二是通過捕獲ArrayIndexOutOfBoundsException異常來處理越界問題,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Java方法重載和重寫原理區(qū)別解析

    Java方法重載和重寫原理區(qū)別解析

    這篇文章主要介紹了Java方法重載和重寫原理區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • 兩種用空格分隔的java字符串的方式

    兩種用空格分隔的java字符串的方式

    這篇文章主要介紹了兩種用空格分隔的java字符串的方式的方法,非常簡單實用,需要的朋友可以參考下
    2015-03-03
  • Java之Spring整合Junit

    Java之Spring整合Junit

    Java Spring框架是一個輕量級的開源框架,具有很高的凝聚力和吸引力,本篇文章帶你了解如何配置數(shù)據(jù)源、注解開發(fā)以及整合Junit
    2023-04-04
  • skywalking分布式服務調用鏈路追蹤APM應用監(jiān)控

    skywalking分布式服務調用鏈路追蹤APM應用監(jiān)控

    這篇文章主要為大家介紹了skywalking分布式服務調用鏈路追蹤APM應用監(jiān)控的功能使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • 在SpringBoot中無縫整合Dubbo的實現(xiàn)過程

    在SpringBoot中無縫整合Dubbo的實現(xiàn)過程

    微服務架構已經(jīng)成為現(xiàn)代應用開發(fā)的熱門趨勢,而Dubbo作為一款強大的分布式服務框架,與Spring?Boot的結合是構建高性能微服務應用的理想選擇,本文將詳細介紹如何在SpringBoot中無縫整合Dubbo,需要的朋友可以參考下
    2024-01-01
  • Spring中的AOP動態(tài)代理源碼詳解

    Spring中的AOP動態(tài)代理源碼詳解

    這篇文章主要介紹了Spring中的AOP動態(tài)代理源碼詳解,AOP即面向切面編程也稱面向方面編程,它是面向對象編程OOP的一種補充,目前已成為一種比較成熟的編程方式,本文就其源碼進行解析,需要的朋友可以參考下
    2023-09-09

最新評論