《每日工作总结》MySQL函数——15.09.17

1. DATEDIFF函数

格式:DATEDIFF(date1, date2)

      该函数用于求解 date1 与 date2 之间的** 天数 **之差。
例如:
SELECT DATEDIFF('2015-09-16', '2015-09-17') AS diffDay
结果为 -1。
      从结果可以看出,该函数的比较是通过 date1 - date2,若结果为正数,表明 date1 大于 date2,否则表示 date1 小于 date2。

      这个函数其实就是这么简单,但是经过我的一番度娘发现,这个函数在SQL Server数据库却有着更加复杂的实现。

格式:DATEDIFF(datepart, startdate, enddate)

其中datepart是表示要比较的时间范围,参考值如下表,startdate表示起始时间,enddate表示终止时间。

datepart 缩写
yy,yyyy
季度 qq,q
mm,m
年中的日 dy,y
dd,d
wk,ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

<em> 个人感觉比较常用的是年、月、日、周、时、分、秒,其他几个俺木有使用过。</em>
使用这个函数完成MySQL的DATEDIFF函数的功能只需如下SQL语句。
SELECT DATEDIFF(d, '2015-09-16', '2015-09-17') AS diffDay

      那么在MySQL中如何实现SQL Server中DATEDIFF函数类似的功能呢,那就需要用到TIMESTAMPDIFF函数了。

格式:TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)

其中interval类似于SQL Server中DATEDIFF函数的datepart参数,取值如下表。

interval
FRAC_SECOND 毫秒
SECOND
MINUTE 分钟
HOUR 小时
DAY
WEEK 星期
MONTH
QUARTER 季度
YEAR

同样可以使用这个函数来MySQL中DATEDIFF函数的功能,只需使用如下的SQL语句。
SELECT TIMESTAMPDIFF(day, '2015-09-16', '2015-09-17') AS diffDay

      因此,在使用MySQL求时间差时,建议使用TIMESTAMPDIFF函数,在SQL Server中求时间差时,使用DATEDIFF函数。

2.GROUP_CONCAT函数

格式:GROUP_CONCAT([DISTINCT] field [ORDER BY ASC/DESC fieldname] [SEPARATOR 'separator']

该函数的作用是可以结合group by语句进行数据表的“行列转换”,将相同分组的某字段的值通过分隔符拼接到一个字段中。
例如:
原始表student_course:

id student_id course_name
1 1 数据结构
2 1 计算机组成原理
3 2 数据结构
4 3 高等数学
5 3 算法分析

执行下面的SQL语句将得到如下结果。
SELECT student_id, GROUP_CONCAT(name) as names FROM student_course group by student_id
结果:

student_id names
1 数据结构,计算机组成原理
2 数据结构
3 高等数学,算法分析

如果仅是需要展示数据,那么这样的结构也许可以满足需求,但是有些时候,我们可能需要进行真正的行列转换,那就需要使用到其他的函数了,可以参考下列文章。
http://www.cnblogs.com/oneivan/archive/2012/02/16/2353796.html
http://blog.csdn.net/kiki113/article/details/4105929

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SQL SELECT 语句 一、查询SQL SELECT 语法 (1)SELECT 列名称 FROM 表名称 (2...
    有钱且幸福阅读 5,819评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,874评论 18 399
  • 1.1、常用数据库包括:Oracle、MySQL、SQLServer、DB2、SyBase等 1.2、Navica...
    NOX_5d2b阅读 3,452评论 0 0
  • 作业一: 5岁的小墨长了一张精致的小脸,浓浓的两道眉毛透出不安分的个性,大眼睛是脸蛋的重点,这是一双谁看见都夸美目...
    陈禾的田阅读 247评论 0 0
  • 注意异常情况(字符串为空,字符串包含错误字符)的检查正负号等特殊情况的考虑还有要注意大数——这种情况这里面没有考虑
    抬头挺胸才算活着阅读 302评论 0 0