Home  >  Article  >  Database  >  MySQL数据库的日期函数与时间函数

MySQL数据库的日期函数与时间函数

WBOY
WBOYOriginal
2016-06-07 16:13:531077browse

以下的文章主要讲述的是MySQL数据库的日期函数与时间函数(MySQL 5.X)的实际应用的经验总结,MySQL日期函数与时间函数在实际应用中出现的频率还是很大的,以下的文章就是对这两个函数的详细描述。 MySQL 数据库获得当前日期时间 函数: 1.1 获得当前日期+时

以下的文章主要讲述的是MySQL数据库的日期函数与时间函数(MySQL 5.X)的实际应用的经验总结,MySQL日期函数与时间函数在实际应用中出现的频率还是很大的,以下的文章就是对这两个函数的详细描述。

MySQL 数据库获得当前日期时间 函数:

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

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> select now();  </span></span></li>
<li><span>+---------------------+  </span></li>
<li class="alt"><span>| now() |  </span></li>
<li><span>+---------------------+  </span></li>
<li class="alt"><span>| 2008-08-08 22:20:46 |  </span></li>
<li><span>+---------------------+  </span></li>
</ol>

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

<ol class="dp-xml">
<li class="alt"><span><span>current_timestamp()  </span></span></li>
<li><span>,current_timestamp  </span></li>
<li class="alt"><span>,localtime()  </span></li>
<li><span>,localtime  </span></li>
<li class="alt"><span>,localtimestamp -- (v4.0.6)  </span></li>
<li><span>,localtimestamp() -- (v4.0.6) </span></li>
</ol>

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

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

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

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> select now(), sleep(3), now();  </span></span></li>
<li><span>+---------------------+----------+---------------------+  </span></li>
<li class="alt"><span>| now() | sleep(3) | now() |  </span></li>
<li><span>+---------------------+----------+---------------------+  </span></li>
<li class="alt"><span>| 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |  </span></li>
<li>
<span>+---------------------+----------+---------------------+mysql</span><span class="tag">></span><span> select sysdate(), sleep(3), sysdate();  </span>
</li>
<li class="alt"><span>+---------------------+----------+---------------------+  </span></li>
<li><span>| sysdate() | sleep(3) | sysdate() |  </span></li>
<li class="alt"><span>+---------------------+----------+---------------------+  </span></li>
<li><span>| 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |  </span></li>
<li class="alt"><span>+---------------------+----------+---------------------+  </span></li>
</ol>

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

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

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

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> select curdate();  </span></span></li>
<li><span>+------------+  </span></li>
<li class="alt"><span>| curdate() |  </span></li>
<li><span>+------------+  </span></li>
<li class="alt"><span>| 2008-08-08 |  </span></li>
<li><span>+------------+  </span></li>
</ol>

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

current_date()
,current_date3. 获得当前时间(time)函数:curtime()

<ol class="dp-xml">
<li class="alt"><span><span>mysql</span><span class="tag">></span><span> select curtime();  </span></span></li>
<li><span>+-----------+  </span></li>
<li class="alt"><span>| curtime() |  </span></li>
<li><span>+-----------+  </span></li>
<li class="alt"><span>| 22:41:30 |  </span></li>
</ol>

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

current_time()

,current_time4. 获得当前 UTC 日期时间函数:

<ol class="dp-xml">
<li class="alt"><span><span>utc_date(), utc_time(), utc_timestamp()  </span></span></li>
<li>
<span>mysql</span><span class="tag">></span><span> select utc_timestamp(), utc_date(), utc_time(), now()  </span>
</li>
<li class="alt"><span>+---------------------+------------+------------+---------------------+  </span></li>
<li><span>| utc_timestamp() | utc_date() | utc_time() | now() |  </span></li>
<li class="alt"><span>+---------------------+------------+------------+---------------------+  </span></li>
<li><span>| 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |  </span></li>
<li class="alt"><span>+---------------------+------------+------------+---------------------+  </span></li>
</ol>

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

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

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

<ol class="dp-xml">
<li class="alt"><span><span>set @</span><span class="attribute">dt</span><span> = </span><span class="attribute-value">'2008-09-10 07:15:30.123456'</span><span>;  </span></span></li>
<li><span>select date(@dt); -- 2008-09-10  </span></li>
<li class="alt"><span>select time(@dt); -- 07:15:30.123456  </span></li>
<li><span>select year(@dt); -- 2008  </span></li>
<li class="alt"><span>select quarter(@dt); -- 3  </span></li>
<li><span>select month(@dt); -- 9  </span></li>
<li class="alt"><span>select week(@dt); -- 36  </span></li>
<li><span>select day(@dt); -- 10  </span></li>
<li class="alt"><span>select hour(@dt); -- 7  </span></li>
<li><span>select minute(@dt); -- 15  </span></li>
<li class="alt"><span>select second(@dt); -- 30  </span></li>
<li><span>select microsecond(@dt);  </span></li>
</ol>

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

<ol class="dp-xml">
<li class="alt"><span><span>set @</span><span class="attribute">dt</span><span> = </span><span class="attribute-value">'2008-09-10 07:15:30.123456'</span><span>;  </span></span></li>
<li><span> </span></li>
<li class="alt"><span>select extract(year from @dt); -- 2008  </span></li>
<li><span>select extract(quarter from @dt); -- 3  </span></li>
<li class="alt"><span>select extract(month from @dt); -- 9  </span></li>
<li><span>select extract(week from @dt); -- 36  </span></li>
<li class="alt"><span>select extract(day from @dt); -- 10  </span></li>
<li><span>select extract(hour from @dt); -- 7  </span></li>
<li class="alt"><span>select extract(minute from @dt); -- 15  </span></li>
<li><span>select extract(second from @dt); -- 30  </span></li>
<li class="alt"><span>select extract(microsecond from @dt); -- 123456select extract(year_month from @dt); -- 200809  </span></li>
<li><span>select extract(day_hour from @dt); -- 1007  </span></li>
<li class="alt"><span>select extract(day_minute from @dt); -- 100715  </span></li>
<li><span>select extract(day_second from @dt); -- 10071530  </span></li>
<li class="alt"><span>select extract(day_microsecond from @dt); -- 10071530123456  </span></li>
<li><span>select extract(hour_minute from @dt); -- 715  </span></li>
<li class="alt"><span>select extract(hour_second from @dt); -- 71530  </span></li>
<li><span>select extract(hour_microsecond from @dt); -- 71530123456  </span></li>
<li class="alt"><span>select extract(minute_second from @dt); -- 1530  </span></li>
<li><span>select extract(minute_microsecond from @dt); -- 1530123456  </span></li>
<li class="alt"><span>select extract(second_microsecond from @dt);  </span></li>
</ol>

30123456MySQL Extract() 函数除了没有date(),time() 的功能外,其他功能一应具全。并且还具有选取‘day_microsecond’ 等功能。注意这里不是只选取 day 和 microsecond,而是从日期的 day 部分一直选取到 microsecond 部分。够强悍的吧!

以上的相关内容就是对MySQL数据库的日期函数、时间函数(MySQL 5.X)的部分内容介绍,望你能有所收获。


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn