亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

引言:

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

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

@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 :當(dāng)前端丟給后端時間參數(shù)的時候,這個注解就將參數(shù)中的時間類型的樣式轉(zhuǎn)為我們設(shè)置的在該注解中的pattern一樣。

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

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

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>

也可以當(dāng)作字段返回,如下:

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 為傳入的結(jié)束時間參數(shù),這二者之間的時間段可以作為一個篩選條件,若該二者時間格式也需要調(diào)整,那么如下:

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+"天");

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

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

總結(jié)

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

相關(guān)文章

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

    Springboot集成graylog及配置過程解析

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

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

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

    java返回的List進(jìn)行add操作報錯

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

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

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

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

    這篇文章主要介紹了Java方法重載和重寫原理區(qū)別解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    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分布式服務(wù)調(diào)用鏈路追蹤APM應(yīng)用監(jiān)控

    skywalking分布式服務(wù)調(diào)用鏈路追蹤APM應(yīng)用監(jiān)控

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

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

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

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

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

最新評論