暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 FORMAT 函数格式化 SQL Server日期

原创 沙沃兴 2023-02-07
4519

           在Microsoft SQL Server 2008 及更早版本使用convert 函数来处理 SQL 查询、SELECT 语句、 存储过程和 T-SQL 脚本中的日期格式。在 这个提示, 日期和时间转换使用 SQL Server,我们有一个可用的列表有关如何使用 CONVERT 函数处理不同日期格式的示例 一个 SQL 数据库。

如您所知,CONVERT 功能不是很灵活,我们的限制日期格式。在Microsoft SQL Server 2012及更高版本中,引入了FORMAT函数,该函数更容易用于格式化日期。 本示例中展示了使用此新函数设置日期格式的不同示例。


从 SQL Server 2012 开始,引入了处理日期格式的函数 这类似于Oracle的to_date函数。许多Oracle的DBA抱怨 SQL Server CONVERT函数及其灵活性差,现在我们有了新的方法 以在 SQL Server 中设置日期格式。

使用 SQL Server FORMAT 函数,我们不需要知道用于获取我们想要的正确日期格式的格式编号,我们只需指定我们想要的显示格式,我们将得到这种格式。


带有格式函数的 SQL 日期格式

  1. 使用 FORMAT 函数设置日期的日期和时间数据类型的格式列(date, datetime, datetime2, smalldatetime, datetimeoffset等数据类型)或变量(如 GETDATE())。
  2. 要获取 DD/MM/YYYY 使用select(getdate(), 'dd/mm/yyyy ') 作为日期。
  3. 要获取 MM-DD-YY 使用select  (getdate(), 'MM-dd-yy') 作为日期。
  4. 查看下面的更多示例

SQL Server FORMAT 函数的语法如下:

FORMAT (value,format[,culture])
GO


用于设置日期格式的 SQL Server 格式示例

让我们从一个例子开始:

SELECT FORMAT (getdate(), 'dd-MM-yy') as date
GO

格式如下:

  • dd 为天的编号01-31 
  • MM为月份的编号01-12 
  • yy为两位数的年份编号


让我们尝试另一个:

SELECT FORMAT (getdate(), 'hh:mm:ss') as time
GO

格式如下:

  • hh 为从 01-12 的一天中的小时
  • mm 为从 00-59 的分钟
  • ss为从 00-59 的秒数


SQL 服务器日期格式输出示例

下面是日期和日期时间格式的列表以及输出示例。 所有这些示例使用的当前日期是“2021-03-21 11:36:14.840”。

QuerySample output
SELECT FORMAT (getdate(), 'dd/MM/yyyy ') as date21/03/2021
SELECT FORMAT (getdate(), 'dd/MM/yyyy, hh:mm:ss ') as date21/03/2021, 11:36:14
SELECT FORMAT (getdate(), 'dddd, MMMM, yyyy') as dateWednesday, March, 2021
SELECT FORMAT (getdate(), 'MMM dd yyyy') as dateMar 21 2021
SELECT FORMAT (getdate(), 'MM.dd.yy') as date03.21.21
SELECT FORMAT (getdate(), 'MM-dd-yy') as date03-21-21
SELECT FORMAT (getdate(), 'hh:mm:ss tt') as date11:36:14 AM
SELECT FORMAT (getdate(), 'd','us') as date03/21/2021
SELECT FORMAT (getdate(), 'yyyy-MM-dd hh:mm:ss tt') as date2021-03-21 11:36:14 AM
SELECT FORMAT (getdate(), 'yyyy.MM.dd hh:mm:ss t') as date2021.03.21 11:36:14 A
SELECT FORMAT (getdate(), 'dddd, MMMM, yyyy','es-es') as date --Spanishdomingo, marzo, 2021
SELECT FORMAT (getdate(), 'dddd dd, MMMM, yyyy','ja-jp') as date --Japanese日曜日 21, 3月, 2021

如您所见,我们使用了很多日期和时间格式选项,这些选项是 下面列出了。

  • dd - 这是01-31的月份中的某一天
  • DDDD - 这是拼写的日子
  • MM - 这是 01-12 的月份数
  • MMM - 月份名称缩写
  • MMMM - 这是拼写的月份
  • yy - 这是两位数的年份
  • yyyy - 这是四位数的年份
  • HH - 这是 01-12 的小时
  • HH - 这是 00-23 的小时
  • mm - 这是从 00-59 的分钟
  • SS - 这是 00-59 的第二个
  • tt - 这显示上午或下午
  • d - 这是从 1-31 开始的月份中的某一天(如果单独使用它,它将显示 整个日期)
  • US - 这显示使用美国区域性的日期,即 MM/DD/YYYY

SQL Server 日期格式与区域性

FORMAT 函数的另一个选项是区域性。随着 区域性选项,您可以获取区域格式。下面是要与FORMAT一起使用的区域性代码列表。

例如,在美国,格式如下:

SELECT FORMAT (getdate(), 'd', 'en-us') as date
GO

在美国,格式是月、日、年。


另一个例子,我们将在玻利维亚使用西班牙文化(es-bo):

SELECT FORMAT (getdate(), 'd', 'es-bo') as date
GO
CultureQuerySample output
English-USASELECT FORMAT (getdate(), 'd', 'en-US') as date10/11/2021
French-FranceSELECT FORMAT (getdate(), 'd', 'fr-FR') as date11/10/2021
Armenian-ArmenianSELECT FORMAT (getdate(), 'd', 'hy-AM') as date11.10.2021
Bosnian LatinSELECT FORMAT (getdate(), 'd', 'bs-Latn-BA') as date11. 10. 2021.
Simplified ChineseSELECT FORMAT (getdate(), 'd', 'zh-CN') as date2021/10/11
Danish - DenmarkSELECT FORMAT (getdate(), 'MM.dd.yy') as date11-10-2021
Dari - AfghanistanSELECT FORMAT (getdate(), 'd', 'prs-AF') as date1400/7/19
Divehi - MaldivesSELECT FORMAT (getdate(), 'd', 'dv-MV') as date11/10/21
French - BelgiumSELECT FORMAT (getdate(), 'd', 'fr-BE') as date11-10-21
French - CanadaSELECT FORMAT (getdate(), 'd', 'fr-CA') as date2021-10-11
Hungarian - HungarySELECT FORMAT (getdate(), 'd', 'hu-HU') as date2021. 10. 11.
isiXhosa / Xhosa - South AfricaSELECT FORMAT (getdate(), 'd', 'xh-ZA') as date2021-10-11


SQL 格式编号示例

该格式还允许根据文化格式化数字。以下 表格将显示不同的示例。

FormatQuerySample output
Currency-English-USASELECT FORMAT(200.36, 'C', 'en-us') AS 'Currency Format'$200.36
Currency-GermanySELECT FORMAT(200.36, 'C', 'de-DE') AS 'Currency Format'200,36 €
Currency-JapanSELECT FORMAT(200.36, 'C', 'ja-JP') AS 'Currency Format'¥200
General FormatSELECT FORMAT(200.3625, 'G', 'en-us') AS 'Format'200.3625
Numeric FormatSELECT FORMAT(200.3625, 'N', 'en-us') AS 'Format'200.36
Numeric 3 decimalsSELECT FORMAT(11.0, 'N3', 'EN-US') AS 'Format'11.000
DecimalSELECT FORMAT(12, 'D', 'en-us') AS 'Format'12
Decimal 4SELECT FORMAT(12, 'D4', 'en-us') AS 'Format'0012
ExponentialSELECT FORMAT(120, 'E', 'EN-US') AS 'Format'1.200000E+002
PercentSELECT FORMAT(0.25, 'P', 'EN-US') AS 'Format'25.00%
HexadecimalSELECT FORMAT(11, 'X', 'EN-US') AS 'Format'B















「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论