最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

引言:

實際上在使用Java開發(fā)過程中,有很多業(yè)務(wù)場景下,都有時間類型的參數(shù)參與。前后端進行交互的時候,針對時間類型的格式都會做一個業(yè)務(wù)上的統(tǒng)一,方便開發(fā)且增加效率。關(guā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 :當前端丟給后端時間參數(shù)的時候,這個注解就將參數(shù)中的時間類型的樣式轉(zhuǎn)為我們設(shè)置的在該注解中的pattern一樣。

@JsonFormat:當后端丟給前端的結(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>

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

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)文章

  • Java對Excel表格的上傳和下載處理方法

    Java對Excel表格的上傳和下載處理方法

    這篇文章主要介紹了Java對Excel表格的上傳和下載處理方法,需要的朋友可以參考下
    2017-08-08
  • JavaWeb中的組件Filter過濾器解析

    JavaWeb中的組件Filter過濾器解析

    這篇文章主要介紹了JavaWeb中的組件Filter過濾器解析,Filter過濾器是一種用于處理和轉(zhuǎn)換數(shù)據(jù)的工具,常用于Web開發(fā)中,它可以在請求到達服務(wù)器之前或響應(yīng)返回給客戶端之前對數(shù)據(jù)進行預處理或后處理,需要的朋友可以參考下
    2023-10-10
  • 全面探究 Java 內(nèi)部類

    全面探究 Java 內(nèi)部類

    說起內(nèi)部類這個詞,想必很多人都不陌生,但是又會覺得不熟悉。原因是平時編寫代碼時可能用到的場景不多,用得最多的是在有事件監(jiān)聽的情況下,并且即使用到也很少去總結(jié)內(nèi)部類的用法。今天我們就來一探究竟
    2021-09-09
  • Spring Cache手動清理Redis緩存

    Spring Cache手動清理Redis緩存

    這篇文章主要介紹了Spring Cache手動清理Redis緩存,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Java中double保留兩位小數(shù)的多種方法

    Java中double保留兩位小數(shù)的多種方法

    這篇文章主要給大家介紹了關(guān)于Java中double保留兩位小數(shù)的多種方法,對于double數(shù)據(jù)類型進行計算發(fā)生的精度丟失的情況,可以按照自己的需求選擇任意方式,需要的朋友可以參考下
    2023-07-07
  • 如何通過Java添加水印到Word文檔

    如何通過Java添加水印到Word文檔

    這篇文章主要介紹了如何通過Java添加水印到Word文檔,水印是一種常用于各種文檔的聲明、防偽手段,一般可設(shè)置文字水印或者加載圖片作為水印。以下內(nèi)容將分享通過Java編程給Word文檔添加水印效果的方法,需要的朋友可以參考下
    2019-07-07
  • 詳解Spring Security中的HttpBasic登錄驗證模式

    詳解Spring Security中的HttpBasic登錄驗證模式

    HttpBasic登錄驗證模式是Spring Security實現(xiàn)登錄驗證最簡單的一種方式,也可以說是最簡陋的一種方式,這篇文章主要介紹了Spring Security的HttpBasic登錄驗證模式,需要的朋友可以參考下
    2019-11-11
  • Java中的日期時間類實例詳解(Date、Calendar、DateFormat)

    Java中的日期時間類實例詳解(Date、Calendar、DateFormat)

    在JDK1.0中,Date類是唯一的一個代表時間的類,但是由于Date類不便于實現(xiàn)國際化,所以從JDK1.1版本開始,推薦使用Calendar類進行時間和日期處理,這篇文章主要介紹了Java中的日期時間類詳解(Date、Calendar、DateFormat),需要的朋友可以參考下
    2023-11-11
  • Java實現(xiàn)文本編譯器

    Java實現(xiàn)文本編譯器

    這篇文章主要為大家詳細介紹了Java實現(xiàn)文本編譯器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • java正則表達式之Pattern與Matcher類詳解

    java正則表達式之Pattern與Matcher類詳解

    這篇文章主要給大家介紹了關(guān)于java正則表達式之Pattern與Matcher類的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09

最新評論

西华县| 万荣县| 饶平县| 内丘县| 镇安县| 桃园市| 岳阳市| 银川市| 仁怀市| 正镶白旗| 台中县| 杭锦旗| 滨海县| 宁远县| 金堂县| 伊通| 永兴县| 禄丰县| 姜堰市| 象山县| 凤庆县| 永吉县| 通州区| 孝义市| 万宁市| 花莲市| 三江| 渭南市| 柳河县| 航空| 读书| 四子王旗| 呼图壁县| 开鲁县| 都匀市| 锦屏县| 兰溪市| 昌黎县| 临湘市| 西乌珠穆沁旗| 博罗县|