📜  MySQL 中的 GET_FORMAT()函数(1)

📅  最后修改于: 2023-12-03 15:03:05.529000             🧑  作者: Mango

MySQL 中的 GET_FORMAT() 函数

简介

GET_FORMAT() 是 MySQL 数据库中的一个函数,用于获取和控制数字和日期时间值的显示格式。它返回一个字符串,表示给定类型值的格式化方式。通过此函数,程序员可以从 MySQL 中获得当前日期时间值和数字的格式,在特定情况下,也可以使用此函数自定义自己想要的格式。

语法
GET_FORMAT(type, format)
参数解释
  • type(必选):指定要格式化的值的类型。可以是以下之一:

    • DATE:用于日期类型值。
    • TIME:用于时间类型值。
    • DATETIME:用于日期时间类型值。
    • TIMESTAMP:用于时间戳类型值。
    • DECIMAL(M,D):用于十进制数字类型值,其中 M 和 D 是数字的精度和小数位数。
    • UNSIGNED [ZEROFILL]:用于无符号数字类型值,在包含 ZEROFILL 时,将使用零填充。
  • format(可选):指定格式代码,用于控制值的显示形式。具体的格式代码按照参数类型稍后介绍。如果不指定,MySQL 将使用默认格式。

返回值
  • 字符串:格式化后的值的显示方式。
用法
格式代码

在 GET_FORMAT() 函数中使用的格式代码取决于类型参数。下面是各个类型对应的格式代码:

  1. DATE:
  • %a:星期名称的缩写(Sun, Mon, Tue,等等)。
  • %b:月份名称的缩写(Jan, Feb, Mar,等等)。
  • %c:月份的数字(1,2,3,等等)。
  • %D:带有后缀的月份的日期数字(1st, 2nd, 3rd, 等等)。
  • %d:月份中的日期数字(01, 02, 03,等等)。
  • %e:月份中的日期数字(1, 2, 3,等等)。
  • %f:微秒(000000 - 999999)。
  • %H:24 小时格式的小时(00 - 23)。
  • %h/%I:12 小时格式的小时(00 - 12)。
  • %j:一年中的日期数字(001 - 366)。
  • %k:24 小时格式的小时(0 - 23)。
  • %l:12 小时格式的小时(1 - 12)。
  • %M:月份的名称(January, February, March,等等)。
  • %m:月份的数字(01, 02, 03,等等)。
  • %p:AM 或 PM。
  • %r:时间,12 小时制(hh:mm:ss AM 或 PM)。
  • %S:秒(00 - 59)。
  • %s:秒(00 - 59),返回时区值,取值为'+HH:MM' 或'-HH:MM'。
  • %T:时间,24 小时制(hh:mm:ss)。
  • %U:一年中的周数,周日作为一周的开始(00 - 53)。
  • %u:一周中的日期数字,这一周的星期一为一周的开始(00 - 53)。
  • %V:一年中的周数,星期一为一周的开始(01 - 53)。
  • %v:可以作为一年中的周数的一周中的日期数字(01 - 53)。
  • %W:星期的名称(Sunday, Monday, Tuesday,等等)。
  • %w:星期的数字,从 0(星期天)到 6(星期六)。
  • %X:一年的年度数字,其中周日是一年的开始(0000 - 9999)。
  • %x:一年的年度数字,其中星期一是一年的开始(0000 - 9999)。
  • %Y:4 位数字的年份。
  • %y:2 位数字的年份(00 - 99)。
  • %Z:基于时区的时间表示(-43200 到 43200)。
  • %z:以 UTC,GMT 或通用时区格式为基础的时区偏移表示(+HHMM 或-HHMM)。
  1. TIME:
  • %f:微秒(000000 - 999999)。
  • %H:24 小时制,其中 0 位补零(00 - 23)。
  • %h/%I:12 小时制,其中 0 位补零(00 - 12)。
  • %i:数字的分钟数(00 - 59)。
  • %S:数字的秒数(00 - 59)。
  • %s:数字的秒数,返回时区值,取值为'+HH:MM' 或'-HH:MM'。
  • %T:时间,24 小时制(hh:mm:ss)。
  • %p:AM 或 PM。
  • %r:时间,12 小时制(hh:mm:ss AM 或 PM)。
  1. DATETIME/TIMESTAMP:
  • %a:星期名称的缩写(Sun, Mon, Tue,等等)。
  • %b:月份名称的缩写(Jan, Feb, Mar,等等)。
  • %c:月份的数字(1,2,3,等等)。
  • %D:带有后缀的日期数字(1st, 2nd, 3rd, 等等)。
  • %d:月份中的日期数字(01, 02, 03,等等)。
  • %e:月份中的日期数字(1, 2, 3,等等)。
  • %f:微秒(000000 - 999999)。
  • %H:24 小时制的小时(00 - 23)。
  • %h/%I:12 小时制的小时(00 - 12)。
  • %j:一年中的日期数字(001 - 366)。
  • %k:24 小时制的小时(0 - 23)。
  • %l:12 小时制的小时(1 - 12)。
  • %M:月份的名称(January, February, March,等等)。
  • %m:月份的数字(01, 02, 03,等等)。
  • %p:AM 或 PM。
  • %r:时间,12 小时制(hh:mm:ss AM 或 PM)。
  • %S:数字的秒数(00 - 59)。
  • %s:数字的秒数,返回时区值,取值为'+HH:MM' 或'-HH:MM'。
  • %T:时间,24 小时制(hh:mm:ss)。
  • %U:一年中的周数,其中周日作为一周的开始(00 - 53)。
  • %u:一周中的日期数字,其中星期天为一周的开始(00 - 53)。
  • %V:一年中的周数,其中星期一作为一周的开始(01 - 53)。
  • %v:可以作为一年中的周数的一周中的日期数字(01 - 53)。
  • %W:星期的名称(Sunday, Monday, Tuesday,等等)。
  • %w:星期的数字,从 0(星期天)到 6(星期六)。
  • %Y:4 位数字的年份。
  • %y:2 位数字的年份(00 - 99)。
  • %X:一年的年度数字,其中周日是一年的开始(0000 - 9999)。
  • %x:一年的年度数字,其中星期一是一年的开始(0000 - 9999)。
  • %Z:基于时区的时间表示(-43200 到 43200)。
  • %z:以 UTC,GMT 或通用时区格式为基础的时区偏移表示(+HHMM 或-HHMM)。
  1. DECIMAL:
  • %s:正或负号,取决于值的符号。
  • %-m.mn:左对齐( -)。
  • %m.mn:右对齐,采用空格填充(默认值)。这会导致小数点位数为 m,宽度为 m + n + 1(当包括符号时)。
  • %m.mnZ:右对齐,采用零填充。这会导致小数点位数为 m,宽度为 m + n + 1(当包括符号时)。
  • %M:用于指定货币符号的格式。M(' ') 表示带空格的 USD 货币符号(默认),而 M('USD') 表示带 USD 货币符号。货币符号最多可以使用 3 个字符。
  1. UNSIGNED ZEROFILL:
  • %m:最小要填充的数字数(在数字的左侧补零)。
示例

下面的示例演示了 GET_FORMAT() 函数的基本语法及其用法:

SELECT GET_FORMAT(DATE, DEFAULT) AS date_format,
       GET_FORMAT(DATETIME, DEFAULT) AS datetime_format,
       GET_FORMAT(TIMESTAMP, DEFAULT) AS timestamp_format,
       GET_FORMAT(TIME, DEFAULT) AS time_format,
       GET_FORMAT(DECIMAL(5,2), DEFAULT) AS decimal_format,
       GET_FORMAT(UNSIGNED ZEROFILL, '%06') AS unsigned_zerofill_format;

上述示例将返回当前数据库中日期、日期时间、时间戳、时间、十进制数字和无符号数字的默认格式:

+--------------+------------------+-------------------+-------------+-----------------+------------------------------+
| date_format  | datetime_format  | timestamp_format  | time_format | decimal_format  | unsigned_zerofill_format      |
+--------------+------------------+-------------------+-------------+-----------------+------------------------------+
| %Y-%m-%d     | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %H:%i:%s    | %s.%2$s         | %06d                         |
+--------------+------------------+-------------------+-------------+-----------------+------------------------------+

对于 DATE 类型,使用代码 %Y-%m-%d。对于 DATETIME 和 TIMESTAMP 类型,使用代码 %Y-%m-%d %H:%i:%s。对于 TIME 类型,使用代码 %H:%i:%s。对于 DECIMAL 类型和 UNSIGNED ZEROFILL 采用默认代码。在示例中,对于 UNSIGNED ZEROFILL 类型,使用了 %06d 来将数字填充到 6 位。

总结

GET_FORMAT() 函数是 MySQL 数据库中一个非常有用的功能。它可以帮助程序员获取和控制数字和日期时间类型的格式,使他们能够更灵活地控制他们的程序。在学习使用此函数时,您需要了解要格式化的值的类型以及可用的格式代码。在使用此函数时,请始终确保使用合适的代码以避免出现问题。