在Hiredmyway中:
SELECT if(LENGTH(company_name) > 30,
concat(SUBSTRING(company_name, 1, 27), '...'),
company_name)
AS org_name,
count(id) AS num,
org_id AS value
,latest_modify_date
FROM v_job_search
WHERE deleted = 0
AND status =
(SELECT code_desc
FROM enums
WHERE kind = 'JS' AND code = '1' AND deleted = 0)
and real_modify_date < date_add(now(),interval -30 minute) # 要同步數據。因為是視圖筆數據庫慢30分鍾。所以要減去30分鍾
GROUP BY org_id
ORDER BY real_modify_date desc limit 0,20;#取前20值
轉自:http://14344twt.blog.163.com/blog/static/475309592010101285018562/
mysql 中 DATE_ADD(date,INTERVAL expr type) 和DATE_SUB(date,INTERVAL expr type)
這些函數執行日期運算。 date 是一個 DATETIME 或DATE值,用來指定起始時間。 expr是一個表達式,用來指定從起始日期添加或減去的時間間隔值。 Expr是一個字符串;對於負值的時間間隔,它可以以一個 ‘-’開頭。type 為關鍵詞,它指示了表達式被解釋的方式。
關鍵詞INTERVA及 type 分類符均不區分大小寫。
以下表顯示了type和expr 參數的關系:
type值 預期的expr 格式 #
------------------------------------------------
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAY
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTES.MICROSECONDS'
MINUTE_SECOND 'MINUTES:SECONDS'
HOUR_MICROSECOND 'HOURS.MICROSECONDS'
HOUR_SECOND 'HOURS:MINUTES:SECONDS'
HOUR_MINUTE 'HOURS:MINUTES'
DAY_MICROSECOND 'DAYS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE 'DAYS HOURS:MINUTES'
DAY_HOUR 'DAYS HOURS'
YEAR_MONTH 'YEARS-MONTHS'
MySQL 允許任何expr 格式中的標點分隔符。表中所顯示的是建議的 分隔符。若 date 參數是一個 DATE值,而你的計算只會包括 YEAR、MONTH和DAY部分(即, 沒有時間部分), 其結果是一個DATE 值。否則,結果將是一個DATETIME值。
若位於另一端的表達式是一個日期或日期時間值 , 則INTERVAL expr type只允許在 + 操作符的兩端。對於–操作符, INTERVAL expr type 只允許在其右端,原因是從一個時間間隔中提取一個日期或日期時間值是毫無意義的。(見下面的例子)。
mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1SECOND;
-> '1998-01-01 00:00:00'
mysql> SELECT INTERVAL 1 DAY + '1997-12-31';
-> '1998-01-01'
mysql> SELECT '1998-01-01' - INTERVAL 1SECOND;
-> '1997-12-31 23:59:59'
mysql> SELECT DATE_ADD('1997-12-3123:59:59',INTERVAL 1 SECOND);
-> '1998-01-01 00:00:00'
mysql> SELECT DATE_ADD('1997-12-3123:59:59',INTERVAL 1 DAY);
-> '1998-01-01 23:59:59'
mysql> SELECT DATE_ADD('1997-12-3123:59:59',INTERVAL '1:1' MINUTE_SECOND);
-> '1998-01-01 00:01:00'
mysql> SELECT DATE_SUB('1998-01-0100:00:00',INTERVAL '1 1:1:1' DAY_SECOND);
-> '1997-12-30 22:58:59'
mysql> SELECT DATE_ADD('1998-01-0100:00:00',INTERVAL '-1 10' DAY_HOUR);
-> '1997-12-30 14:00:00'
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31DAY);
-> '1997-12-02'
mysql> SELECT DATE_ADD('1992-12-3123:59:59.000002',INTERVAL '1.999999' SECOND_MICROSECOND);
-> '1993-01-01 00:00:01.000001'
若你指定了一個過於短的時間間隔值 (不包括type 關鍵詞所預期的所有時間間隔部分), MySQL假定你已經省去了時間間隔值的最左部分。 例如,你指定了一種類型的DAY_SECOND, expr的值預期應當具有天、小時、分鍾和秒部分。若你指定了一個類似 '1:10'的值, MySQL假定天和小時部分不存在,那么這個值代表分和秒。換言之, '1:10' DAY_SECOND 被解釋為相當於 '1:10'MINUTE_SECOND。這相當於 MySQL將TIME 值解釋為所耗費的時間而不是日時的解釋方式。
假如你對一個日期值添加或減去一些含有時間部分的內容,則結果自動轉化為一個日期時間值:
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1DAY);
-> '1999-01-02'
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1HOUR);
-> '1999-01-01 01:00:00'
假如你使用了格式嚴重錯誤的日期,則結果為 NULL。假如你添加了 MONTH、YEAR_MONTH或YEAR,而結果日期中有一天的日期大於添加的月份的日期最大限度,則這個日期自動被調整為添加月份的最大日期:
mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1MONTH);
-> '1998-02-28'
2019/07/04更新
實踐證明:其實也可以傳入字符串形式的起始時間,比如
SELECT DATE_ADD('1998-06-30', INTERVAL 2 day);
End.
原文地址:https://blog.csdn.net/yuan8080/article/details/6989467