用時間戳來計算
創(chuàng)新新互聯(lián),憑借十年的成都做網(wǎng)站、成都網(wǎng)站建設經(jīng)驗,本著真心·誠心服務的企業(yè)理念服務于成都中小企業(yè)設計網(wǎng)站有上1000家案例。做網(wǎng)站建設,選創(chuàng)新互聯(lián)公司。
SELECT?(UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP('2015-04-20?15:12:12'))/60;
也就是得到兩個時間相差的秒數(shù),然后除60得到分種。
在mysql中,這種計算可用TIMESTAMPDIFF函數(shù)來解決,但是解決過程中需要將數(shù)據(jù)多次加工。
1、創(chuàng)建測試表及插入測試數(shù)據(jù):
create?table?test
(time1?datetime,
time2?datetime)
insert?into?test?values?('2015-04-03?17:01:09','2015-06-03?22:09:30')
2、目前要結(jié)算time2和time1的時間差,用如下語句:
select?round(TIMESTAMPDIFF(second,time1,time2)/3600,2)?from?test
結(jié)果如圖:
解讀:
首先,先用
select?TIMESTAMPDIFF(second,time1,time2)?from?test
來計算兩個時間之間的秒數(shù)差。
然后,得到的結(jié)果除以3600,即為這兩個時間之間的小時數(shù)。
最后因為要求保留2位小數(shù),則通過round函數(shù),四舍五入,取出2位小數(shù)即可。
SELECT
TIMESTAMPDIFF(
YEAR,
NOW(),
DATE_ADD(NOW(), INTERVAL 365 DAY)
),
TIMESTAMPDIFF(
MONTH,
NOW(),
DATE_ADD(NOW(), INTERVAL 365 DAY)
),
TIMESTAMPDIFF(
DAY,
NOW(),
DATE_ADD(NOW(), INTERVAL 365 DAY)
),
NOW(),
DATE_ADD(NOW(), INTERVAL 365 DAY)
TO_DAYS(date字段1) - TO_DAYS(date字段2)
1、利用TO_DAYS函數(shù)
select to_days(now()) - to_days('19930908')
2、利用DATEDIFF函數(shù)
select datediff(now(),'19930908')
參數(shù)1 - 參數(shù)2 等于間隔天數(shù)
在 MySQL 中創(chuàng)建表時,對照上面的表格,選擇到合適自己的數(shù)據(jù)類型。選擇datetime 還是 timestamp會有點犯難。這兩個日期時間類型各有優(yōu)點:datetime 的日期范圍比較大;timestamp 所占存儲空間比較小,只是 datetime 的一半。
擴展資料:
在ORDER BY操作中,MySQL 只有在排序條件不是一個查詢條件表達式的情況下才使用索引。(雖然如此,在涉及多個數(shù)據(jù)表查詢里,即使有索引可用,那些索引在加快 ORDER BY 方面也沒什么作用)。
如果某個數(shù)據(jù)列里包含許多重復的值,就算為它建立了索引也不會有很好的效果。比如說,如果某個數(shù)據(jù)列里包含的凈是些諸如 “0/1” 或 “Y/N” 等值,就沒有必要為它創(chuàng)建一個索引。
參考資料來源:百度百科-mySQL
不考慮 “天”的因素:
select if(month(d2)-month(d1)0,
concat(year(d2)-year(d1),'年',month(d2)-month(d1),'月'),
concat(year(d2)-year(d1)-1,'年',month(d2)-month(d1)+12,'月')) as r from xxxxx
----------------------------------------------------------------------------------------------------------
例子:
d1='2013-05-13'
d2='2014-07-13'
select if(month('2014-07-13')-month('2013-05-13')0,
concat(year('2014-07-13')-year('2013-05-13'),'年',month('2014-07-13')-month('2013-05-13'),'月'),
concat(year('2014-07-13')-year('2013-05-13')-1,'年',month('2014-07-13')-month('2013-05-13')+12,'月')) as r
結(jié)果:1年2月
=================================================================
d1='2013-05-13'
d2='2014-01-13'
select if(month('2014-01-13')-month('2013-05-13')0,
concat(year('2014-01-13')-year('2013-05-13'),'年',month('2014-01-13')-month('2013-05-13'),'月'),
concat(year('2014-01-13')-year('2013-05-13')-1,'年',month('2014-01-13')-month('2013-05-13')+12,'月')) as r
結(jié)果:0年8月
SET @a = '2015-09-15 12:00:00';SET @b = '2011-09-15 12:00:00';SELECT YEAR(@a) - YEAR(@b);