在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 日期格式
- 使用 FORMAT 函数设置日期的日期和时间数据类型的格式列(date, datetime, datetime2, smalldatetime, datetimeoffset等数据类型)或变量(如 GETDATE())。
- 要获取 DD/MM/YYYY 使用select(getdate(), 'dd/mm/yyyy ') 作为日期。
- 要获取 MM-DD-YY 使用select (getdate(), 'MM-dd-yy') 作为日期。
- 查看下面的更多示例
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”。
Query | Sample output |
---|---|
SELECT FORMAT (getdate(), 'dd/MM/yyyy ') as date | 21/03/2021 |
SELECT FORMAT (getdate(), 'dd/MM/yyyy, hh:mm:ss ') as date | 21/03/2021, 11:36:14 |
SELECT FORMAT (getdate(), 'dddd, MMMM, yyyy') as date | Wednesday, March, 2021 |
SELECT FORMAT (getdate(), 'MMM dd yyyy') as date | Mar 21 2021 |
SELECT FORMAT (getdate(), 'MM.dd.yy') as date | 03.21.21 |
SELECT FORMAT (getdate(), 'MM-dd-yy') as date | 03-21-21 |
SELECT FORMAT (getdate(), 'hh:mm:ss tt') as date | 11:36:14 AM |
SELECT FORMAT (getdate(), 'd','us') as date | 03/21/2021 |
SELECT FORMAT (getdate(), 'yyyy-MM-dd hh:mm:ss tt') as date | 2021-03-21 11:36:14 AM |
SELECT FORMAT (getdate(), 'yyyy.MM.dd hh:mm:ss t') as date | 2021.03.21 11:36:14 A |
SELECT FORMAT (getdate(), 'dddd, MMMM, yyyy','es-es') as date --Spanish | domingo, 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
Culture | Query | Sample output |
---|---|---|
English-USA | SELECT FORMAT (getdate(), 'd', 'en-US') as date | 10/11/2021 |
French-France | SELECT FORMAT (getdate(), 'd', 'fr-FR') as date | 11/10/2021 |
Armenian-Armenian | SELECT FORMAT (getdate(), 'd', 'hy-AM') as date | 11.10.2021 |
Bosnian Latin | SELECT FORMAT (getdate(), 'd', 'bs-Latn-BA') as date | 11. 10. 2021. |
Simplified Chinese | SELECT FORMAT (getdate(), 'd', 'zh-CN') as date | 2021/10/11 |
Danish - Denmark | SELECT FORMAT (getdate(), 'MM.dd.yy') as date | 11-10-2021 |
Dari - Afghanistan | SELECT FORMAT (getdate(), 'd', 'prs-AF') as date | 1400/7/19 |
Divehi - Maldives | SELECT FORMAT (getdate(), 'd', 'dv-MV') as date | 11/10/21 |
French - Belgium | SELECT FORMAT (getdate(), 'd', 'fr-BE') as date | 11-10-21 |
French - Canada | SELECT FORMAT (getdate(), 'd', 'fr-CA') as date | 2021-10-11 |
Hungarian - Hungary | SELECT FORMAT (getdate(), 'd', 'hu-HU') as date | 2021. 10. 11. |
isiXhosa / Xhosa - South Africa | SELECT FORMAT (getdate(), 'd', 'xh-ZA') as date | 2021-10-11 |
SQL 格式编号示例
该格式还允许根据文化格式化数字。以下 表格将显示不同的示例。
Format | Query | Sample output |
---|---|---|
Currency-English-USA | SELECT FORMAT(200.36, 'C', 'en-us') AS 'Currency Format' | $200.36 |
Currency-Germany | SELECT FORMAT(200.36, 'C', 'de-DE') AS 'Currency Format' | 200,36 € |
Currency-Japan | SELECT FORMAT(200.36, 'C', 'ja-JP') AS 'Currency Format' | ¥200 |
General Format | SELECT FORMAT(200.3625, 'G', 'en-us') AS 'Format' | 200.3625 |
Numeric Format | SELECT FORMAT(200.3625, 'N', 'en-us') AS 'Format' | 200.36 |
Numeric 3 decimals | SELECT FORMAT(11.0, 'N3', 'EN-US') AS 'Format' | 11.000 |
Decimal | SELECT FORMAT(12, 'D', 'en-us') AS 'Format' | 12 |
Decimal 4 | SELECT FORMAT(12, 'D4', 'en-us') AS 'Format' | 0012 |
Exponential | SELECT FORMAT(120, 'E', 'EN-US') AS 'Format' | 1.200000E+002 |
Percent | SELECT FORMAT(0.25, 'P', 'EN-US') AS 'Format' | 25.00% |
Hexadecimal | SELECT FORMAT(11, 'X', 'EN-US') AS 'Format' | B |