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

SQL常見(jiàn)函數(shù)整理之Format將日期、時(shí)間和數(shù)字值格式化

 更新時(shí)間:2024年01月12日 11:11:04   作者:@北海怪獸  
最近項(xiàng)目總是寫(xiě)sql查詢(xún)時(shí)間,數(shù)據(jù)庫(kù)存的時(shí)間有各種格式,下面這篇文章主要給大家介紹了關(guān)于SQL常見(jiàn)函數(shù)整理之Format將日期、時(shí)間和數(shù)字值格式化的相關(guān)資料,需要的朋友可以參考下

1. 用法

用于將日期、時(shí)間和數(shù)字值格式化為指定的字符串表示形式。

2. 基本語(yǔ)法

FORMAT(value, format)
  • value :要格式化的日期、時(shí)間或數(shù)字值。
  • format :指定要應(yīng)用的格式的字符串??梢允褂貌煌母袷酱a來(lái)定義所需的格式,格式代碼的具體取決于值的類(lèi)型。

① 日期格式代碼

  • yyyy:四位數(shù)的年份。
  • MM:兩位數(shù)的月份,帶前導(dǎo)零 (注意和分鐘區(qū)分,分鐘是小寫(xiě)的mm)
  • MMM:縮寫(xiě)的月份名稱(chēng)(例如:Jan、Feb)
  • dd:兩位數(shù)的日期,帶前導(dǎo)零
select
 format(cast('2024-01-01 10:35:14.277' as datetime), 'yyyy') as Year
,format(cast('2024-01-01 10:35:14.277' as datetime), 'MM'  ) AS Month
,format(cast('2024-01-01 10:35:14.277' as datetime), 'MMM' ) AS MonthAbbr
,format(cast('2024-01-01 10:35:14.277' as datetime), 'dd'  ) as day

查詢(xún)結(jié)果如下圖所示:

② 時(shí)間格式代碼

  • hh:12 小時(shí)制的小時(shí),帶前導(dǎo)零(例如:01-12)
  • HH:24 小時(shí)制的小時(shí),帶前導(dǎo)零(例如:00-23)
  • mm:分鐘,帶前導(dǎo)零(例如:00-59)
  • ss:秒,帶前導(dǎo)零(例如:00-59)
select
 format(cast('2024-01-01 19:05:09.277' as datetime), 'hh') as Hour_12h
,format(cast('2024-01-01 19:05:09.277' as datetime), 'HH'  ) AS Hour_24h
,format(cast('2024-01-01 19:05:09.277' as datetime), 'mm' ) AS Minute
,format(cast('2024-01-01 19:05:09.277' as datetime), 'ss'  ) as Second

查詢(xún)結(jié)果如下圖所示:

③ 數(shù)字格式代碼

  • 0:數(shù)字占位符,若位數(shù)不足則用零填充
  • #,##0.00:用逗號(hào)分隔千位數(shù),保留兩位小數(shù)
--假設(shè) 某ID 固定長(zhǎng)度是6位
SELECT FORMAT(1234, '000000') AS FormattedNumber;
--查詢(xún)結(jié)果:  '001234'

select format(12345.6789,'#,##0.00')
--查詢(xún)結(jié)果:   '12,345.68'

3. 應(yīng)用示例

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd') AS FormattedDate;
-- 輸出:"2023-10-18"

SELECT FORMAT(GETDATE(), 'hh:mm:ss tt') AS FormattedTime;
-- 輸出:02:28:30 PM

SELECT FORMAT(1234567.89, '#,##0.00') AS FormattedNumber;
-- 輸出:"1,234,567.89"

注意事項(xiàng):

1. 格式代碼注意區(qū)分大小寫(xiě)

2. FORMAT() 函數(shù)在日期、時(shí)間和數(shù)字格式化方面非常強(qiáng)大,但它也可能會(huì)影響查詢(xún)性能。在處理大量數(shù)據(jù)時(shí),建議使用其他更高效的方法來(lái)格式化數(shù)據(jù),比如在應(yīng)用層或報(bào)表工具中進(jìn)行格式化。

附:日期計(jì)算

在表的實(shí)際計(jì)算中,常需要計(jì)算距離某個(gè)日期或現(xiàn)在日期往前或往后某段時(shí)間的日期。

-- 加(Mysql)
select date_add(now(),interval 1 day);
-- year:年,quarter:季,month:月,week:周,day:天,hour:小時(shí),minuter:分鐘,second:秒,microsecond:毫秒
-- 加(sql server)
select dateadd(day,n,'2023-06-20')
-- 加(Hive)
select date_add(current_timestamp(),1) -- 加一天
select add_months('2022-07-16', n) -- Hive加n個(gè)月份
select date_format(date_sub(current_timestamp(),1),'yyyy-MM-dd') --指定前一天日期
select from_unixtime((unix_timestamp()-86400),'yyyy-MM') --指定前一天日期
-- Gbase指定前一天日期
select subdate(current_date,interval 1 day) 
-- 減
select date_sub(now(),interval 1 month);
select date_sub(date_format(current_timestamp(),'yyyy-MM-dd'),1) 
select date_sub(current_timestamp(),14) -- Hive指定前一天日期
-- 計(jì)算日期間隔
select datediff('2023-6-16','2023-6-1') -- mysql,Hive計(jì)算兩個(gè)日期之間的間隔(相差天數(shù))
select datediff('d','2023-6-1','2023-6-16 12:20:00') --sql server計(jì)算兩個(gè)日期之間間隔天數(shù)
select months_between('2023-09-22','2022-07-16') -- Hive計(jì)算兩個(gè)日期之間的間隔
select timediff('12:00:00', '11:30:00') -- 兩個(gè)時(shí)間間隔
select timestampdiff(month,date_sub(now(),interval 60 day),now()); -- 相差月
-- timestampdiff第一個(gè)參數(shù)定義返回計(jì)算的結(jié)果。year:年,quarter:季,month:月,week:周,day:天,hour:小時(shí),minuter:分鐘,second:秒,microsecond:毫秒
-- timestampdiff減去的日期帶有時(shí)間,會(huì)認(rèn)為是下一天(2023-07-20 08:00:00會(huì)按照2023-07-21計(jì)算);datediff會(huì)直接截取時(shí)間(2023-07-20 18:00:00也會(huì)按照2023-07-20計(jì)算)
select timestampdiff(day,'2023-07-13',current_date()) -- timestampdiff可以實(shí)現(xiàn)各種字符串(例如2023-07-13,20230703)日期的加減

-- 當(dāng)月的第一天
select STR_TO_DATE(CONCAT(DATE_FORMAT(now(),'%Y-%m'), '-01'), '%Y-%m-%d')
-- sql server返回當(dāng)月1號(hào)
select CONVERT(varchar(10),DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0),120)
-- 當(dāng)月最后一天
select DATE_ADD(STR_TO_DATE(CONCAT(DATE_FORMAT(DATE_ADD(now(),INTERVAL 1 MONTH),'%Y-%m'), '-01'), '%Y-%m-%d'),INTERVAL -1 DAY); 

總結(jié)

到此這篇關(guān)于SQL常見(jiàn)函數(shù)整理之Format將日期、時(shí)間和數(shù)字值格式化的文章就介紹到這了,更多相關(guān)SQL Format日期時(shí)間和數(shù)字值格式化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決mysql數(shù)據(jù)庫(kù)設(shè)置遠(yuǎn)程連接權(quán)限執(zhí)行g(shù)rant all privileges on *.* to 'root'@'%' identified by '密碼' with grant optio報(bào)錯(cuò)

    解決mysql數(shù)據(jù)庫(kù)設(shè)置遠(yuǎn)程連接權(quán)限執(zhí)行g(shù)rant all privileges on&n

    這篇文章主要介紹了解決mysql數(shù)據(jù)庫(kù)設(shè)置遠(yuǎn)程連接權(quán)限執(zhí)行g(shù)rant all privileges on *.* to 'root'@'%' identified by '密碼' with grant optio報(bào)錯(cuò),通過(guò)本文給大家分享問(wèn)題原因解析及解決方法,需要的朋友可以參考下
    2022-11-11
  • MySql 8.0及對(duì)應(yīng)驅(qū)動(dòng)包匹配的注意點(diǎn)說(shuō)明

    MySql 8.0及對(duì)應(yīng)驅(qū)動(dòng)包匹配的注意點(diǎn)說(shuō)明

    這篇文章主要介紹了MySql 8.0及對(duì)應(yīng)驅(qū)動(dòng)包匹配的注意點(diǎn)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • MySQL Event Scheduler(事件調(diào)度器)

    MySQL Event Scheduler(事件調(diào)度器)

    事件調(diào)度器是在 MySQL 5.1 中新增的另一個(gè)特色功能,可以作為定時(shí)任務(wù)調(diào)度器,取代部分原先只能用操作系統(tǒng)任務(wù)調(diào)度器才能完成的定時(shí)功能。
    2010-06-06
  • mysql日志觸發(fā)器實(shí)現(xiàn)代碼

    mysql日志觸發(fā)器實(shí)現(xiàn)代碼

    這篇文章主要介紹了mysql日志觸發(fā)器實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2020-02-02
  • mysql 刪除操作(delete+TRUNCATE)

    mysql 刪除操作(delete+TRUNCATE)

    這篇文章主要介紹了mysql 刪除操作,主要包括了delete與TRUNCATE的使用,需要的朋友可以參考下
    2014-11-11
  • MySQL日志管理和備份與恢復(fù)

    MySQL日志管理和備份與恢復(fù)

    這篇文章主要介紹了MySQL如何實(shí)現(xiàn)日志的管理,備份與恢復(fù),本文有一定的參考價(jià)值,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • 快速了解MySQL 索引

    快速了解MySQL 索引

    這篇文章主要介紹了MySQL 索引的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • MySQL中substr函數(shù)使用方法實(shí)例詳解

    MySQL中substr函數(shù)使用方法實(shí)例詳解

    MySQL的SUBSTR()函數(shù)可以用于從指定字符串的指定位置開(kāi)始提取指定長(zhǎng)度的字符,下面這篇文章主要給大家介紹了關(guān)于MySQL中substr函數(shù)使用方法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • 關(guān)于Mysql中current_time/current_date()與now()區(qū)別

    關(guān)于Mysql中current_time/current_date()與now()區(qū)別

    這篇文章主要介紹了關(guān)于current_time/current_date()與now()區(qū)別,在Mysql中 current_time函數(shù)是顯示當(dāng)前時(shí)間的,而其他兩個(gè)函數(shù)有何不同呢, 接下來(lái)我們就一起來(lái)看看吧
    2023-04-04
  • 如何解決mysql執(zhí)行導(dǎo)入sql文件速度太慢的問(wèn)題

    如何解決mysql執(zhí)行導(dǎo)入sql文件速度太慢的問(wèn)題

    文章介紹了一種通過(guò)修改MySQL導(dǎo)出命令參數(shù)來(lái)優(yōu)化大SQL文件導(dǎo)入速度的方法,通過(guò)對(duì)比目標(biāo)庫(kù)和導(dǎo)出庫(kù)的參數(shù)值,并使用優(yōu)化后的參數(shù)進(jìn)行導(dǎo)出,再在目標(biāo)庫(kù)導(dǎo)入,顯著提高了導(dǎo)入速度
    2024-11-11

最新評(píng)論