MySQL应用中,日期与查询是非常普遍的。比如要查某天、某个星期、或者某个月内的数据,查询两个日期之间的天数差,查询某天是星期几等等。下面就介绍一下相关的MySQL时间与日期函数,与它们的具体使用方法。
NOW() 函数
MYSQL 有没有像 MSSQL 的 getdate() 函数?有,就是 NOW()。
1 | mysql> SELECT now(); |
2 | + ---------------------+ |
3 | | now() | |
4 | + ---------------------+ |
5 | | 2011-10-27 09:49:42 | |
6 | + ---------------------+ |
7 | 1 row in set |
NOW() 函数返回当前的日期和时间。
DATEDIFF() 函数
DATEDIFF() 函数返回两个日期之间的天数。
DATEDIFF(expr,expr2)
DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。
1 | mysql> SELECT DATEDIFF( '2011-10-27' , '2011-09-05' ) AS DiffDate; |
2 | + ----------+ |
3 | | DiffDate | |
4 | + ----------+ |
5 | | 52 | |
6 | + ----------+ |
7 | 1 row in set |
查询一周内的数据
01 | mysql> SELECT title FROM table WHERE datediff(FROM_UNIXTIME( date ),now()) > -7; |
02 | + ------------------------------------+ |
03 | | title | |
04 | + ------------------------------------+ |
05 | | 什么是面向服务架构SOA | |
06 | | 从菜鸟到编程高手的学习与认知历程 | |
07 | | JavaScript去除空格trim()的原生实现 | |
08 | | C语言程序在内存中的运行情况 | |
09 | | 为什么说Lisp到现在还很先进 | |
10 | | JavaScript截取中英文字符串 | |
11 | | 谈谈Javascript的匿名函数 | |
12 | | 程序员需要具备的一些基本技能 | |
13 | | 美国社会的一些潜规则 | |
14 | | 二叉搜索树的一些相关算法介绍 | |
15 | | JQuery仿淘宝滚动加载图片 | |
16 | | 收藏一些规范化输入输出的PHP函数 | |
17 | | 趣谈编程语言结构——函数 | |
18 | | CSS设计一个三列布局的页面 | |
19 | | 关于Android应用apk的程序签名 | |
20 | | JavaScript模拟打字效果 | |
21 | | 欧几里德算法(辗转相处法)练手 | |
22 | | JavaScript身份证号码有效性验证 | |
23 | | JavaScript对iframe的DOM操作 | |
24 | | 如何处理JSON中的特殊字符 | |
25 | | 一份腾讯2011笔试题 | |
26 | | PHP如何实现异步数据调用 | |
27 | | 网站运营需要了解的一些规律 | |
28 | | 勤于思考才能善于架构 | |
29 | + ------------------------------------+ |
30 | 24 rows in set |
同样查询一个月,一年,任意天数都可以这么使用。
查询当天则可以这么写:
1 | mysql> SELECT title FROM table WHERE datediff(FROM_UNIXTIME( date ),now()) >= 0; |
2 | + ----------------------------+ |
3 | | post_title | |
4 | + ----------------------------+ |
5 | | 网站运营需要了解的一些规律 | |
6 | | 勤于思考才能善于架构 | |
7 | + ----------------------------+ |
8 | 2 rows in set |
查询某天是星期几
DAYNAME(date)
返回date对应的工作日名称。
1 | mysql> SELECT DAYNAME( NOW() ); |
2 | + ------------------+ |
3 | | DAYNAME( NOW() ) | |
4 | + ------------------+ |
5 | | Thursday | |
6 | + ------------------+ |
7 | 1 row in set |
查询该日期是当周第几天则这么写:
1 | mysql> SELECT DAYOFWEEK( NOW() ); |
2 | + --------------------+ |
3 | | DAYOFWEEK( NOW() ) | |
4 | + --------------------+ |
5 | | 5 | |
6 | + --------------------+ |
7 | 1 row in set |
返回date (1 = 周日, 2 = 周一, ..., 7 = 周六)对应的工作日索引。这些索引值符合 ODBC标准。