日期函数

NOW() 函数

定义和用法

NOW() 返回当前的日期和时间。

语法

 NOW()

实例

下面是 SELECT 语句:

 SELECT NOW(),CURDATE(),CURTIME()

结果如下所示:

NOW() CURDATE() CURTIME()
2008-11-11 12:45:34 2008-11-11 12:45:34

实例

下面的 SQL 创建带有日期时间列(OrderDate)的 "Orders" 表:

 CREATE TABLE Orders
 (
 OrderId int NOT NULL,
 ProductName varchar(50) NOT NULL,
 OrderDate datetime NOT NULL DEFAULT NOW(),
 PRIMARY KEY (OrderId)
 )

请注意,OrderDate 列规定NOW()作为默认值。作为结果,当您向表中插入行时,当前日期和时间自动插入列中。

现在,我们想要在 "Orders" 表中插入一条记录:

 INSERT INTO Orders (ProductName) VALUES ('Jarlsberg Cheese')

"Orders" 表将如下所示:

OrderId ProductName OrderDate
1 Jarlsberg Cheese 2008-11-11 13:23:44.657

CURDATE() 函数

定义和用法

CURDATE() 返回当前的日期。

语法

CURDATE()

实例

下面是 SELECT 语句:

SELECT NOW(),CURDATE(),CURTIME()

结果如下所示:

NOW() CURDATE() CURTIME()
2008-11-11 12:45:34 2008-11-11 12:45:34

实例

下面的 SQL 创建带有日期时间列(OrderDate)的 "Orders" 表:

 CREATE TABLE Orders
 (
 OrderId int NOT NULL,
 ProductName varchar(50) NOT NULL,
 OrderDate datetime NOT NULL DEFAULT CURDATE(),
 PRIMARY KEY (OrderId)
 )

请注意,OrderDate 列规定 CURDATE() 作为默认值。作为结果,当您向表中插入行时,当前日期和时间自动插入列中。

现在,我们想要在 "Orders" 表中插入一条记录:

 INSERT INTO Orders (ProductName) VALUES ('Jarlsberg Cheese')

"Orders" 表将如下所示:

OrderId ProductName OrderDate
1 Jarlsberg Cheese 2008-11-11

CURTIME() 函数

定义和用法

CURTIME()返回当前的时间。

语法

 CURTIME()

实例

下面是 SELECT 语句:

SELECT NOW(),CURDATE(),CURTIME()

结果如下所示:

NOW() CURDATE() CURTIME()
2008-11-11 12:45:34 2008-11-11 12:45:34

DATE_ADD() 函数

定义和用法

DATE_ADD()函数向日期添加指定的时间间隔。

语法

DATE_ADD(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

type 参数: 日期类型


实例

假设我们有如下的 "Orders" 表:

OrderId ProductName OrderDate
1 Jarlsberg Cheese 2008-11-11 13:23:44.657

现在,我们想要向 "OrderDate" 添加 45 天,这样就可以找到付款日期。

我们使用下面的 SELECT 语句:

 SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 45 DAY) AS OrderPayDate
 FROM Orders

结果:

OrderId OrderPayDate
1 2008-12-26 13:23:44.657

DATE_SUB() 函数

定义和用法

DATE_SUB() 函数从日期减去指定的时间间隔。

语法

 DATE_SUB(date,INTERVAL expr type)

date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

type 参数: 日期类型

实例

假设我们有如下的 "Orders" 表:

OrderId ProductName OrderDate
1 Jarlsberg Cheese 2008-11-11 13:23:44.657

现在,我们想要向 "OrderDate" 减去 5 天。

我们使用下面的 SELECT 语句:

 SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 5 DAY) AS SubtractDate
 FROM Orders

结果:

OrderId SubtractDate
1 2008-11-06 13:23:44.657

DATEDIFF() 函数

定义和用法

DATEDIFF() 函数返回两个日期之间的天数。

语法

 DATEDIFF(date1,date2)

date1 和 date2 参数是合法的日期或日期/时间表达式。

注释:只有值的日期部分参与计算。


实例

下面是 SELECT 语句:

 SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate

结果如下所示:

DiffDate
1

实例

下面是 SELECT 语句:

 SELECT DATEDIFF('2008-11-29','2008-11-30') AS DiffDate

结果如下所示:

DiffDate
-1

DATE_FORMAT() 函数

定义和用法

DATE_FORMAT()函数用于以不同的格式显示日期/时间数据。

语法

 DATE_FORMAT(date,format)

date 参数是合法的日期。format 规定日期/时间的输出格式。

实例

下面的脚本使用 DATE_FORMAT() 函数来显示不同的格式。我们使用 NOW() 来获得当前的日期/时间:

select  
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p'),
DATE_FORMAT(NOW(),'%m-%d-%Y'),
DATE_FORMAT(NOW(),'%d %b %y'),
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')

结果如下所示:

 Nov 04 2008 11:45 PM
 11-04-2008
 04 Nov 08
 04 Nov 2008 11:45:34:243

day()函数

DAY函数返回给定日期的月份的日期部分。下面显示DAY函数的语法:

DAY(date);

DAY函数接受一个参数,它是您要获取月份日期的日期值。如果date参数为零,例如'0000-00-00',则DAY函数返回0,如果日期为NULL,则DAY函数返回NULL值。

DAY函数示例

以下示例返回2018-01-15的当天的日期:

mysql> SELECT DAY('2018-01-15');
+-------------------+
| DAY('2018-01-15') |
+-------------------+
|                15 |
+-------------------+
1 row in set

要根据指定的日期获取一个月中的天数,您可以组合LAST_DAYDAY函数,如以下示例所示:

mysql> SELECT DAY(LAST_DAY('2018-02-03'));
+-----------------------------+
| DAY(LAST_DAY('2018-02-03')) |
+-----------------------------+
|                          28 |
+-----------------------------+
1 row in set

LAST_DAY函数返回一月的最后一天,例如2016-02-29DAY函数返回最后一天的那个月的日期,也就是该月份的天数。

DATE() 函数

定义和用法

DATE() 函数提取日期或日期/时间表达式的日期部分。

语法

DATE(date)

date 参数是合法的日期表达式。


实例

假设我们有如下的 "Orders" 表:

OrderId ProductName OrderDate
1 Jarlsberg Cheese 2008-11-11 13:23:44.657

下面是 SELECT 语句:

 SELECT ProductName, DATE(OrderDate) AS OrderDate
 FROM Orders
 WHERE OrderId=1

结果如下所示:

ProductName OrderDate
Jarlsberg Cheese 2008-11-11

EXTRACT() 函数

定义和用法

EXTRACT() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

语法

EXTRACT(unit FROM date)

date 参数是合法的日期表达式。unit 参数见最后。

实例

假设我们有如下的 "Orders" 表:

OrderId ProductName OrderDate
1 Jarlsberg Cheese 2008-11-11 13:23:44.657

下面是 SELECT 语句:

 SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear,
         EXTRACT(MONTH FROM OrderDate) AS OrderMonth,
         EXTRACT(DAY FROM OrderDate) AS OrderDay,
 FROM Orders
 WHERE OrderId=1

结果如下所示:

OrderYear OrderMonth OrderDay
2008 11 11

format 规定日期/时间的输出格式。

格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%I 小时 (01-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位

type 参数可以是下列值:

Type 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

unit 参数

Unit 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

参考

Update time: 2020-09-04

results matching ""

    No results matching ""