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

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

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

引言:

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

1、簡單介紹:

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

DATE_FORMAT(date, format)

其中:

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

2、舉例

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

常見的格式化選項有:

%Y 年份,四位數
%y 年份,兩位數
%m 月份,兩位數
%d 日期,兩位數
%H 小時,24小時制,兩位數
%h 小時,12小時制,兩位數
%i 分鐘,兩位數
%s 秒,兩位數
%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 :當前端丟給后端時間參數的時候,這個注解就將參數中的時間類型的樣式轉為我們設置的在該注解中的pattern一樣。

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

重點是無論怎么丟參數,丟的都是Date類型,現在 使用sql 中 DATE_FORMAT 函數來參與業(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')

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

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 為傳入的開始時間參數,endTime 為傳入的結束時間參數,這二者之間的時間段可以作為一個篩選條件,若該二者時間格式也需要調整,那么如下:

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函數的簡單使用。

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

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函數舉例詳解的文章就介紹到這了,更多相關SQL DATE_FORMAT函數詳解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

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

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

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

    JavaWeb中的組件Filter過濾器解析

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

    全面探究 Java 內部類

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

    Spring Cache手動清理Redis緩存

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

    Java中double保留兩位小數的多種方法

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

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

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

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

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

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

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

    Java實現文本編譯器

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

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

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

最新評論

屯门区| 丽江市| 璧山县| 班玛县| 和田县| 璧山县| 高尔夫| 新密市| 江孜县| 会昌县| 略阳县| 巴楚县| 额尔古纳市| 五家渠市| 中江县| 英吉沙县| 东港市| 永泰县| 漠河县| 江都市| 龙井市| 五河县| 柳江县| 浪卡子县| 尖扎县| 霍城县| 瑞安市| 闸北区| 视频| 鄯善县| 会同县| 正镶白旗| 临江市| 保靖县| 普陀区| 元阳县| 庄河市| 濮阳市| 昌吉市| 永仁县| 阿城市|