美文网首页
《每日工作总结》MySQL函数——15.09.17

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

作者: 懒人成长 | 来源:发表于2015-09-17 22:44 被阅读47次

    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

    相关文章

      网友评论

          本文标题:《每日工作总结》MySQL函数——15.09.17

          本文链接:https://www.haomeiwen.com/subject/vssbcttx.html