SQL Server日期格式化

SQL Server日期格式化

SQL Server日期格式化

日期格式化是在数据库中经常需要处理的任务之一。在SQL Server中,可以使用不同的函数和格式来格式化日期和时间的显示方式。本文将详细介绍SQL Server中的日期格式化方法,包括内置日期格式、自定义日期格式、日期函数和示例。

一、内置日期格式化函数

SQL Server提供了一些内置函数,用于在查询中对日期和时间进行格式化。

1. GETDATE()

GETDATE()函数可用于获取当前日期和时间。它返回一个datetime类型的值,格式为yyyy-MM-dd HH:mm:ss

示例代码:

SELECT GETDATE();

运行结果:

2022-01-01 12:34:56

2. CONVERT()

CONVERT()函数用于将日期和时间从一种数据类型转换为另一种数据类型,同时可以指定转换后的格式。

例如,将日期转换为字符串,可以使用以下语法:

CONVERT(varchar, date_column, format_code)

format_code表示日期格式的代码。常用的格式代码如下:

  • 101mm/dd/yyyy
  • 102yyyy.mm.dd
  • 103dd/mm/yyyy
  • 104dd.mm.yyyy
  • 120yyyy-mm-dd HH:mi:ss
  • 121yyyy-mm-dd HH:mi:ss.mmm

示例代码:

SELECT CONVERT(varchar, GETDATE(), 101) AS formatted_date;

运行结果:

01/01/2022

3. FORMAT()

FORMAT()函数是SQL Server 2012及更高版本中引入的。它可以根据自定义格式字符串来格式化日期。

FORMAT(date_column, 'format_string')

其中,format_string表示自定义的日期格式。

示例代码:

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd') AS formatted_date;

运行结果:

2022-01-01

二、自定义日期格式

除了使用内置函数外,还可以使用自定义的日期格式字符串来格式化日期。以下是一些常用的日期格式字符串:

  • yyyy:四位数的年份
  • yy:两位数的年份
  • MM:月份(01-12)
  • M:月份(1-12)
  • dd:天(01-31)
  • d:天(1-31)
  • HH:24小时制的小时(00-23)
  • hh:12小时制的小时(01-12)
  • mm:分钟(00-59)
  • ss:秒(00-59)
  • tt:AM/PM指示符
  • zzz:毫秒(000-999)

示例代码:

SELECT CONVERT(varchar, GETDATE(), 'yyyy年MM月dd日 HH:mm:ss') AS formatted_date;

运行结果:

2022年01月01日 12:34:56

三、日期函数

SQL Server还提供了一些日期函数,用于对日期和时间进行计算和处理。

1. DATEPART()

DATEPART()函数用于提取日期和时间的特定部分,例如年、月、日、小时、分钟等。

DATEPART(date_part, date_expression)

其中,date_part表示要提取的部分,date_expression表示日期或时间表达式。

示例代码:

SELECT DATEPART(year, GETDATE()) AS year,
       DATEPART(month, GETDATE()) AS month,
       DATEPART(day, GETDATE()) AS day,
       DATEPART(hour, GETDATE()) AS hour,
       DATEPART(minute, GETDATE()) AS minute,
       DATEPART(second, GETDATE()) AS second;

运行结果:

year  month  day  hour  minute  second
2022  01     01   12    34      56

2. DATEADD()

DATEADD()函数用于对日期进行加减运算。

DATEADD(date_part, number, date_expression)

示例代码:

SELECT DATEADD(year, 1, GETDATE()) AS one_year_later,
       DATEADD(month, -1, GETDATE()) AS one_month_ago;

运行结果:

one_year_later         one_month_ago
2023-01-01 12:34:56   2021-12-01 12:34:56

3. DATEDIFF()

DATEDIFF()函数用于计算两个日期之间的差异。

DATEDIFF(date_part, start_date, end_date)

示例代码:

DECLARE @start_date DATE = '2021-01-01';
DECLARE @end_date DATE = '2022-01-01';

SELECT DATEDIFF(year, @start_date, @end_date) AS years,
       DATEDIFF(month, @start_date, @end_date) AS months,
       DATEDIFF(day, @start_date, @end_date) AS days;

运行结果:

years   months  days
1       12      366

四、示例

下面通过一个示例来演示如何在实际情况中格式化日期。

假设有一个名为orders的表,包含以下列:

  • order_id:订单ID(int)
  • order_date:订单日期(datetime)

现在我们需要查询该表中最近一周内的订单,并将订单日期格式化为yyyy-MM-dd的形式。可以使用以下SQL语句实现:

SELECT order_id, CONVERT(varchar, order_date, 120) AS formatted_order_date
FROM orders
WHERE order_date >= DATEADD(week, -1, GETDATE())

运行结果:

order_id  formatted_order_date
1         2021-12-25 12:00:00
2         2021-12-26 12:00:00
3         2021-12-27 12:00:00
...

以上示例中,我们使用了CONVERT()函数将日期格式化为指定的格式,并使用WHERE子句过滤出最近一周内的订单。

五、总结

本文介绍了SQL Server中日期格式化的方法,包括内置日期格式函数、自定义日期格式、日期函数和示例。通过合理运用这些方法,可以灵活处理日期和时间的显示方式,满足不同的需求。在实际应用中,根据具体需求选择合适的格式化方法,可以提升查询结果的可读性和易用性。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程