1. DATEDIFF函數(shù)
格式:DATEDIFF(date1欺税, date2)
??????該函數(shù)用于求解 date1 與 date2 之間的** 天數(shù) **之差。
例如:
SELECT DATEDIFF('2015-09-16', '2015-09-17') AS diffDay
結(jié)果為 -1欲虚。
??????從結(jié)果可以看出集灌,該函數(shù)的比較是通過 date1 - date2,若結(jié)果為正數(shù),表明 date1 大于 date2欣喧,否則表示 date1 小于 date2腌零。
??????這個(gè)函數(shù)其實(shí)就是這么簡(jiǎn)單,但是經(jīng)過我的一番度娘發(fā)現(xiàn)唆阿,這個(gè)函數(shù)在SQL Server數(shù)據(jù)庫(kù)卻有著更加復(fù)雜的實(shí)現(xiàn)益涧。
格式:DATEDIFF(datepart, startdate, enddate)
其中datepart是表示要比較的時(shí)間范圍,參考值如下表驯鳖,startdate表示起始時(shí)間闲询,enddate表示終止時(shí)間。
datepart | 縮寫 |
---|---|
年 | yy,yyyy |
季度 | qq,q |
月 | mm,m |
年中的日 | dy,y |
日 | dd,d |
周 | wk,ww |
星期 | dw, w |
小時(shí) | hh |
分鐘 | mi, n |
秒 | ss, s |
毫秒 | ms |
微妙 | mcs |
納秒 | ns |
<em> 個(gè)人感覺比較常用的是年浅辙、月扭弧、日、周记舆、時(shí)鸽捻、分、秒泽腮,其他幾個(gè)俺木有使用過御蒲。</em>
使用這個(gè)函數(shù)完成MySQL的DATEDIFF函數(shù)的功能只需如下SQL語(yǔ)句。
SELECT DATEDIFF(d, '2015-09-16', '2015-09-17') AS diffDay
??????那么在MySQL中如何實(shí)現(xiàn)SQL Server中DATEDIFF函數(shù)類似的功能呢诊赊,那就需要用到TIMESTAMPDIFF函數(shù)了删咱。
格式:TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)
其中interval類似于SQL Server中DATEDIFF函數(shù)的datepart參數(shù),取值如下表豪筝。
interval | 值 |
---|---|
FRAC_SECOND | 毫秒 |
SECOND | 秒 |
MINUTE | 分鐘 |
HOUR | 小時(shí) |
DAY | 天 |
WEEK | 星期 |
MONTH | 月 |
QUARTER | 季度 |
YEAR | 年 |
同樣可以使用這個(gè)函數(shù)來(lái)MySQL中DATEDIFF函數(shù)的功能痰滋,只需使用如下的SQL語(yǔ)句。
SELECT TIMESTAMPDIFF(day, '2015-09-16', '2015-09-17') AS diffDay
??????因此续崖,在使用MySQL求時(shí)間差時(shí)敲街,建議使用TIMESTAMPDIFF函數(shù),在SQL Server中求時(shí)間差時(shí)严望,使用DATEDIFF函數(shù)多艇。
2.GROUP_CONCAT函數(shù)
格式:GROUP_CONCAT([DISTINCT] field [ORDER BY ASC/DESC fieldname] [SEPARATOR 'separator']
該函數(shù)的作用是可以結(jié)合group by語(yǔ)句進(jìn)行數(shù)據(jù)表的“行列轉(zhuǎn)換”,將相同分組的某字段的值通過分隔符拼接到一個(gè)字段中像吻。
例如:
原始表student_course:
id | student_id | course_name |
---|---|---|
1 | 1 | 數(shù)據(jù)結(jié)構(gòu) |
2 | 1 | 計(jì)算機(jī)組成原理 |
3 | 2 | 數(shù)據(jù)結(jié)構(gòu) |
4 | 3 | 高等數(shù)學(xué) |
5 | 3 | 算法分析 |
執(zhí)行下面的SQL語(yǔ)句將得到如下結(jié)果峻黍。
SELECT student_id, GROUP_CONCAT(name) as names FROM student_course group by student_id
結(jié)果:
student_id | names |
---|---|
1 | 數(shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)組成原理 |
2 | 數(shù)據(jù)結(jié)構(gòu) |
3 | 高等數(shù)學(xué)拨匆,算法分析 |
如果僅是需要展示數(shù)據(jù)姆涩,那么這樣的結(jié)構(gòu)也許可以滿足需求,但是有些時(shí)候惭每,我們可能需要進(jìn)行真正的行列轉(zhuǎn)換骨饿,那就需要使用到其他的函數(shù)了,可以參考下列文章。
http://www.cnblogs.com/oneivan/archive/2012/02/16/2353796.html
http://blog.csdn.net/kiki113/article/details/4105929