开发者

SQL常见函数整理之Format将日期、时间和数字值格式化

开发者 https://www.devze.com 2024-01-14 08:57 出处:网络 作者: @北海怪兽
目录1. 用法2.javascript 基本语法① 日期格式代码② 时间格式代码③ 数字格式代码3. 应用示例附:日期计算总结1. 用法
目录
  • 1. 用法
  • 2.javascript 基本语法
    • ① 日期格式代码
    • ② 时间格式代码
    • ③ 数字格式代码
  • 3. 应用示例
    • 附:日期计算
      • 总结

        1. 用法

        用于将日期、时间和数字值格式化为指定的字符串表示形式。

        2. 基本语法

        FORMAT(value, format)
        
        • value :要格式化的日期、时间或数字值。
        • format :指定要应用的格式的字符串。可以使用不同的格式代码来定义所需的格式,格式代码的具体取决于值的类型。

        ① 日期格式代码

        • yyyy:四位数的年份。
        • MM:两位数的月份,带前导零 (注意和分钟区分,分钟是小写的mm)
        • MMM:缩写的月份名称(例如:Jan、Feb)
        • dd:两位数的日期,带前导零
        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

        查询结果如下图所示:

        SQL常见函数整理之Format将日期、时间和数字值格式化

        ② 时间格式代码

        • hh:12 小时制的小时,带前导零(例如:01-12)
        • HH:24 小时制的小时,带前导零(例如:00-23)
        • mm:分钟,带前导零(例如:00-59)
        • ss:秒,带前导零(例如: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

        查询结果如下图所示:

        SQL常见函数整理之Format将日期、时间和数字值格式化

        ③ 数字格式代码

        • 0:数字占位符,若位数不足则用零填充
        • #,##0.00:用逗号分隔千位数,保留两位小数
        --假设 某ID 固定长度是6位
        SELECT FORMAT(1234, '000000') AS FormattedNumber;
        --查询结果:  '001234'
        
        select format(12345.6789,'#,##0.00')
        --查询结果:   '12,345.68'

        3. 应用示例

        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"
        

        注意事项:

        1. 格式代码注意区分大小写

        2. FORMAT() 函数在日期、时间和数字格式化方面非常强大,但它也可能会影响查询性能。在处理大量数据时,建议使用其他更高效的方法来格式化数据,比如在应用层android或报表工具中进行格式化。

        附:日期计算

        在表的实际计算中,常需要计算距离某个日期或现在日期往前或往后某段时间的日期。

        -- 加(Mysandroidql)
        select date_add(now(),interval 1 day);
        -- year:年,quarter:季,month:月,week:周,day:天,hour:小时,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个月份
        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指定前一天日期
        -- 计算日期间隔
        select datediff('2023-6-16','2023-6-1') -- mysql,Hive计算两个日期之间的间隔(相差天数)
        select datediff('d','2023-6-1','2023-6-16 12:20:00') --sql server计算两个日期之间间隔天数
        select months_between('2023-09-22','2022-07-16') -- Hive计算两个日期之间的间隔
        select timediff('12:00:00', '11:30:00') -- 两个时间间隔
        select timestampdiff(month,date_sub(now(),interval 60 day),now()); -- 相差月
        -- timestampdiff第一个参数定义返回计算的结果。year:年,quarter:季,month:月,week:周,day:天编程客栈,hour:小时,minuter:分钟,second:秒,microsecond:毫秒
        -- timestampdiff减去的日期带有时间,会认为是下一天(2023-07-20 08:00:00会按照2023-07-21计算);datediff会直接截取时间(2023-07-20 18:00:00也会按照2023-07-20计算)
        select timestampdiff(day,'2023-07-13',current_date()) -- timestampdiff可以实现各种字符串(例如2023-07-13,20230703)日期的加减
        
        -- 当月的第一天
        select STR_TO_DATE(CONCAT(DATE_FORMAT(now(),'%Y-%m'), '-01'), '%Y-%m-%d')
        -- sql server返回当月1号
        select CONVERT(varchar(10),DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0),120)
        -- 当月最后一天
        select DATE_ADD(STR_TO_DATE(CONCAT(DATE_FORMAT(DATE_ADD(now(),INTERVAL 1 MONTandroidH),'%Y-%m'), '-01'), '%Y-%m-%d'),INTERVAL -1 DAY); 
        

        总结

        到此这篇关于SQL常见函数整理之Format将日期、时间和数字值格式化的文章就介绍到这了,更多相关SQL Format日期时间和数字值格式化内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        关注公众号