0


SQL Date Functions | SQL Time Functions 概述

SQL Date Functions | SQL Time Functions

在SQL中,日期和时间函数是用于处理日期和时间数据的重要工具。

SQL Date Functions | SQL Time Functions函数可以从日期时间数据中提取特定的部分、执行日期计算、格式化日期时间等操作。
在这里插入图片描述


No.FunctionDescription描述1NOW( )Displays the current date and time.显示当前日期和时间。2CURDATE( )Displays the current date.显示当前日期。3CURTIME( )Displays the current time.显示当前时间。4DATE( )Displays the date from the Date/DateTime expression.从日期/日期时间表达式中显示日期。5EXTRACT( )Displays selected part i.e. date/time.显示所选的日期/时间部分。6DAY( )Displays the day from the given date.显示给定日期的天数。7MONTH( )Displays the month from the given date.显示给定日期的月份。8YEAR( )Displays the year from the given date.显示给定日期的年份。9DATE_ADD( )Displays date after adding the given interval.显示添加给定间隔后的日期。10DATE_SUB( )Displays date after subtracting the given interval.显示减去给定间隔后的日期。11DATEDIFF( )Displays the interval between two dates.显示两个日期之间的间隔。12DATE_FORMAT( )Displays the date/time data in various formats available.以各种可用的格式显示日期/时间数据。

1. NOW( )

在这里插入图片描述

  • 描述: 返回当前日期和时间。
  • 用法: 在插入或更新记录时,有助于获取当前时间戳。
SELECTNOW();-- 示例输出:2024-07-25 12:00:00

在 MySQL 中,

NOW()

函数可以通过指定不同的参数来控制返回的时间精确度。

  1. NOW(0) - 精确到秒:SELECTNOW(0);
  2. NOW(1) - 精确到十分之一秒:
  3. NOW(2) - 精确到百分之一秒:
  4. NOW(3) - 精确到毫秒:SELECTNOW(3);
  5. NOW(4) - 精确到十分之一毫秒:
  6. NOW(5) - 精确到百万分之一秒(微秒):
  7. NOW(6) - 精确到千万分之一秒(微秒):

2. CURDATE( )

在这里插入图片描述

  • 描述: 返回当前日期。
  • 用法: 用于获取当前日期,不包含时间部分。
SELECT CURDATE();-- 示例输出:2024-07-25

3. CURTIME( )

在这里插入图片描述

  • 描述: 返回当前时间。
  • 用法: 用于获取当前时间,不包含日期部分。
SELECT CURTIME();-- 示例输出:12:00:00

4. DATE( )

在这里插入图片描述

  • 描述: 从日期或日期时间表达式中提取日期部分。
  • 用法: 从日期时间字段中分离并显示日期部分。
SELECTDATE('2024-07-25 12:00:00');-- 示例输出:2024-07-25

5. EXTRACT( )

在这里插入图片描述

  • 描述: 从日期或时间中提取特定部分(如年份、月份、日期等)。
  • 用法: 从给定的日期或时间值中提取并返回指定的组件(年、月、日等)。
EXTRACT(unit FROM datetime_expression)
  • unit 是要从日期时间表达式中提取的部分,可以是 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 等。
  • datetime_expression 是一个日期时间表达式,可以是一个日期、时间或日期时间值。
  1. 提取年份SELECT EXTRACT(YEARFROM'2024-07-25')ASyear;
  2. 提取月份SELECT EXTRACT(MONTHFROM'2024-07-25')ASmonth;
  3. 提取日SELECT EXTRACT(DAYFROM'2024-07-25')ASday;
  4. 提取小时SELECT EXTRACT(HOURFROM'2024-07-25 12:30:45')AShour;
  5. 提取分钟SELECT EXTRACT(MINUTEFROM'2024-07-25 12:30:45')ASminute;
  6. 提取秒SELECT EXTRACT(SECONDFROM'2024-07-25 12:30:45')ASsecond;

6. DAY( )

  • 描述: 从给定日期中提取天数部分。在这里插入图片描述
  • 用法示例:SELECTDAY(NOW());结果可能是当前月份的某一天,例如 25

7. MONTH( )

  • 描述: 从给定日期中提取月份部分。

在这里插入图片描述

  • 用法示例:SELECTMONTH(NOW()); 结果可能是当前年份的某一月份,例如 7

8. YEAR( )

  • 描述: 从给定日期中提取年份部分。

在这里插入图片描述

  • 用法示例:SELECTYEAR(NOW()); 结果可能是当前年份的数字,例如 2024

9. DATE_ADD( )

  • 描述: 在给定的日期上添加指定的时间间隔。在这里插入图片描述
  • 用法示例:SELECT DATE_ADD(NOW(),INTERVAL1MONTH);这将返回当前日期加上一个月后的日期。
DATE_ADD()

函数中的

unit

参数指定了时间量的单位,用于指定要添加的时间间隔的类型

  1. MICROSECOND- 微秒。示例:INTERVAL 100 MICROSECOND
  2. SECOND- 秒。示例:INTERVAL 30 SECOND
  3. MINUTE- 分钟。示例:INTERVAL 15 MINUTE
  4. HOUR- 小时。示例:INTERVAL 2 HOUR
  5. DAY- 天。示例:INTERVAL 7 DAY
  6. WEEK- 周。示例:INTERVAL 2 WEEK
  7. MONTH- 月。示例:INTERVAL 3 MONTH
  8. QUARTER- 季度。示例:INTERVAL 1 QUARTER
  9. YEAR- 年。示例:INTERVAL 5 YEAR
  • 添加微秒SELECT DATE_ADD('2024-07-25',INTERVAL100 MICROSECOND)AS new_date;
  • 添加分钟SELECT DATE_ADD('2024-07-25',INTERVAL15MINUTE)AS new_date;
  • 添加周SELECT DATE_ADD('2024-07-25',INTERVAL2 WEEK)AS new_date;
  • 添加季度SELECT DATE_ADD('2024-07-25',INTERVAL1 QUARTER)AS new_date;
  • 添加年SELECT DATE_ADD('2024-07-25',INTERVAL5YEAR)AS new_date;

下面的sub同理。

10. DATE_SUB( )

  • 描述: 在给定的日期上减去指定的时间间隔。

在这里插入图片描述

  • 用法示例:SELECT DATE_SUB(NOW(),INTERVAL1 WEEK);这将返回当前日期减去一周后的日期。

11. DATEDIFF( )

  • 描述: 计算两个日期之间的天数差。

在这里插入图片描述

DATEDIFF

函数是用于计算两个日期之间的差异(间隔)的函数,返回的是整数值,表示两个日期之间的天数差。

DATEDIFF(date1, date2)

其中:

  • date1date2 是要比较的两个日期或日期时间表达式。

假设有一个表

orders

,其中包含

order_date

记录订单的日期时间。

  1. 计算天数差异SELECT DATEDIFF('2024-07-25','2024-07-20')AS day_difference;返回 5,表示从 2024-07-202024-07-25 之间相差了5天。
  2. 结合表中的日期字段SELECT order_id, order_date, DATEDIFF(CURRENT_DATE(), order_date)AS days_since_orderFROM orders;计算每个订单的 order_date 到当前日期 (CURRENT_DATE()) 的天数差。
  • DATEDIFF() 返回的是日期的绝对差值,如果 date1date2 之后,则结果是正数;如果 date1date2 之前,则结果是负数。

12. DATE_FORMAT( )

  • 描述: 将日期/时间数据格式化为不同的字符串格式。在这里插入图片描述
DATE_FORMAT(date, format)

其中:

  • date 是要格式化的日期或日期时间表达式。
  • format 是用于指定输出格式的字符串。

常见的格式化选项,用于构建

format

字符串:

  • %Y: 四位数年份(例如:2024)
  • %y: 两位数年份(例如:24)
  • %m: 月份(01 到 12)
  • %d: 月份中的天数(01 到 31)
  • %H: 小时(00 到 23)
  • %h: 小时(01 到 12)
  • %i: 分钟(00 到 59)
  • %s: 秒(00 到 59)
  • %W: 星期全名(例如:Monday)
  • %a: 星期缩写(例如:Mon)
  • %M: 月份全名(例如:July)
  • %b: 月份缩写(例如:Jul)
  • %e: 月份中的天数(1 到 31,没有前导零)
  • %T: 时间(24小时制,例如:13:45:30)
  • %r: 时间(12小时制,例如:01:45:30 PM)

  • 1: 格式化日期

假设有一个表

employees

,其中包含

hire_date

字段记录雇佣日期。

SELECT hire_date, DATE_FORMAT(hire_date,'%Y-%m-%d')AS formatted_hire_date
FROM employees;

根据

%Y-%m-%d

格式化为类似

2024-07-25

的形式。

  • 2: 显示月份和年份
SELECT hire_date, DATE_FORMAT(hire_date,'%M %Y')AS formatted_month_year
FROM employees;
hire_date

格式化为类似

July 2024

的形式。

  • 3: 自定义日期格式
SELECT hire_date, DATE_FORMAT(hire_date,'Joined on %W, %M %e, %Y')AS custom_format
FROM employees;

hire_date

格式化为类似

Joined on Monday, July 25, 2024

的形式。

  • 4: 格式化时间

假设有一个

orders

表,其中包含

order_time

记录下单时间的字段。

SELECT order_time, DATE_FORMAT(order_time,'%H:%i:%s')AS formatted_time
FROM orders;

order_time

根据

%H:%i:%s

格式化为类似

12:30:45

的形式。

  • 5: 使用AM/PM格式
SELECT order_time, DATE_FORMAT(order_time,'%h:%i %p')AS formatted_time_am_pm
FROM orders;

order_time

格式化为类似

12:30 PM

的形式。

  • 6: 结合日期和时间格式化
SELECT order_datetime, DATE_FORMAT(order_datetime,'%Y-%m-%d %H:%i:%s')AS formatted_datetime
FROM orders;

order_datetime

格式化为类似

2024-07-25 12:30:45

的形式。

  • 7: 获取月份和年份的缩写
SELECT hire_date, DATE_FORMAT(hire_date,'%b %Y')AS formatted_month_year_short
FROM employees;
Jul 2024

标签: sql 数据库

本文转载自: https://blog.csdn.net/weixin_48935611/article/details/140697932
版权归原作者 喻师傅 所有, 如有侵权,请联系我们删除。

“SQL Date Functions | SQL Time Functions 概述”的评论:

还没有评论