MySQL获取当前日期

MySQL 获取当前日期及日期格式

获取系统日期: NOW()

格式化日期: DATE_FORMAT(date, format)

注: date:时间字段

format:日期格式

返回系统日期,输出 2009-12-25 14:38:59

?
1
select now();

输出 09-12-25

?
1
select date_format(now(), '%y-%m-%d' );

根据format字符串格式化date值:

  • %S, %s 两位数字形式的秒( 00,01, ..., 59)
  • %I, %i 两位数字形式的分( 00,01, ..., 59)
  • %H 两位数字形式的小时,24 小时(00,01, ..., 23)
  • %h 两位数字形式的小时,12 小时(01,02, ..., 12)
  • %k 数字形式的小时,24 小时(0,1, ..., 23)
  • %l 数字形式的小时,12 小时(1, 2, ..., 12)
  • %T 24 小时的时间形式(hh:mm:ss)
  • %r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)
  • %p AM或PM
  • %W 一周中每一天的名称(Sunday, Monday, ..., Saturday)
  • %a 一周中每一天名称的缩写(Sun, Mon, ..., Sat)
  • %d 两位数字表示月中的天数(00, 01,..., 31)
  • %e 数字形式表示月中的天数(1, 2, ..., 31)
  • %D 英文后缀表示月中的天数(1st, 2nd, 3rd,...)
  • %w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, ..., 6=Saturday)
  • %j 以三位数字表示年中的天数( 001, 002, ..., 366)
  • %U 周(0, 1, 52),其中Sunday 为周中的第一天
  • %u 周(0, 1, 52),其中Monday 为周中的第一天
  • %M 月名(January, February, ..., December)
  • %b 缩写的月名( January, February,...., December)
  • %m 两位数字表示的月份(01, 02, ..., 12)
  • %c 数字表示的月份(1, 2, ...., 12)
  • %Y 四位数字表示的年份
  • %y 两位数字表示的年份
  • %% 直接值“%”

MySQL 获得当前日期时间 函数

1.1 获得当前日期+时间(date + time)函数:now()

?
1
2
3
4
5
6
7
mysql> select now();
 
+ ---------------------+
| now() |
+ ---------------------+
| 2008-08-08 22:20:46 |
+ ---------------------+

除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:

  1. current_timestamp()
  2. ,current_timestamp
  3. ,localtime()
  4. ,localtime
  5. ,localtimestamp -- (v4.0.6)
  6. ,localtimestamp() -- (v4.0.6)

这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。

1.2 获得当前日期+时间(date + time)函数:sysdate()

sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> select now(), sleep(3), now();
 
+ ---------------------+----------+---------------------+
| now() | sleep(3) | now() |
+ ---------------------+----------+---------------------+
| 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |
+ ---------------------+----------+---------------------+mysql> select sysdate(), sleep(3), sysdate();
 
+ ---------------------+----------+---------------------+
| sysdate() | sleep(3) | sysdate() |
+ ---------------------+----------+---------------------+
| 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |
+ ---------------------+----------+---------------------+

可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the functionexecutes。

sysdate() 日期时间函数,一般情况下很少用到。

2. 获得当前日期(date)函数:curdate()

?
1
2
3
4
5
6
7
mysql> select curdate();
 
+ ------------+
| curdate() |
+ ------------+
| 2008-08-08 |
+ ------------+

其中,下面的两个日期函数等同于 curdate():

current_date()

,current_date

3. 获得当前时间(time)函数:curtime()

?
1
2
3
4
5
6
7
mysql> select curtime();
 
+ -----------+
| curtime() |
+ -----------+
| 22:41:30 |
+ -----------+

其中,下面的两个时间函数等同于 curtime():

current_time()

,current_time

4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()

?
1
2
3
4
5
6
7
mysql> select utc_timestamp(), utc_date(), utc_time(), now()
 
+ ---------------------+------------+------------+---------------------+
| utc_timestamp() | utc_date() | utc_time() | now() |
+ ---------------------+------------+------------+---------------------+
| 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |
+ ---------------------+------------+------------+---------------------+

因为我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候,非常有用。

二、MySQL 日期时间 Extract(选取) 函数。

1. 选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒

?
1
2
3
4
5
6
7
8
9
10
11
12
13
set @dt = '2008-09-10 07:15:30.123456' ;
 
select date (@dt); -- 2008-09-10
select time (@dt); -- 07:15:30.123456
select year (@dt); -- 2008
select quarter(@dt); -- 3
select month (@dt); -- 9
select week(@dt); -- 36
select day (@dt); -- 10
select hour (@dt); -- 7
select minute (@dt); -- 15
select second (@dt); -- 30
select microsecond(@dt); -- 123456

2. MySQL Extract() 函数,可以上面实现类似的功能:

?
1
2
3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值