PHP日期查詢函數實用程式碼

WBOY
發布: 2016-07-25 08:54:10
原創
1383 人瀏覽過
  1. date_default_timezone_set('PRC'); //預設時區

  2. echo "今天:",date(" Y-m-d",time()),"
    ";
  3. echo "今天:",date("Y-m-d",strtotime("18 june 2008")),"
    ";
  4. echo "昨天:",date("Y-m-d",strtotime("-1 day")), "
    ";
  5. echo "明天:",date("Y-m-d",strtotime(" 1 day")), "
    ";
  6. echo "一週後:",date("Y-m-d",strtotime(" 1 week")), "
    ";
  7. echo "一週兩天四小時兩秒後:",date("Y-m-d G:H:s",strtotime(" 1 week 2 days 4 hours 2 seconds")), "
    ";
  8. echo "下個星期四:",date(" Y-m-d",strtotime("next Thursday")), "
    ";
  9. echo "上個週一:".date("Y-m-d",strtotime("last Monday"))."
    ";
  10. echo "一個月前:".date("Y-m-d",strtotime("last month"))."
    ";
  11. echo "一個月後:".date("Y-m-d",strtotime (" 1 month"))."
    ";
  12. echo "十年後:".date("Y-m-d",strtotime(" 10 year"))."
    ";
  13. $ a = date("w",time()); //取得今天是本週週幾
  14. $startweekdate =date("Y-m-d H:i:s",strtotime($today)-($a-1 )*24*3600); //取得本週一
  15. $endweekdate =date("Y-m-d H:i:s",strtotime($today) (7-$a 1)*24*3600); //取得本週最後一天並為下週的第一天
  16. $endnextweekdate=date("Y-m-d",strtotime($endweekdate) 7*24*3600);//下下週的最後一天
  17. ?>
  18. $d = time(); //待處理的日期
  19. $w = date("w",$d); //這一天是星期幾

  20. $d0 = date("Y-m-d",strtotime("-$w day",$d)); //週開始
  21. $d6 = date("Y-m-d",strtotime((6-$ w)." day",$d)); //週結束
  22. ?>
  23. $d = time(); //待處理的日期
  24. $w = date ("w",$d); //這天是星期幾
  25. $d0 = mktime (0,0,0,date("m"),date("d") - $w,date("Y"));//週開始

  26. $d0 = mktime (0,0,0,date("m"),date("d") - $w 6,date( "Y"));//週結束
  27. ?>
  28. $date = time();
  29. $w = date("w",$ d);

  30. $d0 = date("Y-m-d",strtotime("-$w day",$date)); //週開始
  31. $d6 = date("Y-m-d",strtotime((6- $w)." day",$date)); //週結束
  32. ?>
  33. $date1 = date("Y-m-d",strtotime("Sunday")); //週開始
  34. $ date2 = date("Y-m-d",strtotime("Saturday")); //週結束
  35. $date1 = date("Y-m-d",strtotime("last Sunday")); //上週開始
  36. $ date2 = date("Y-m-d",strtotime("last Saturday")); //上週結束
  37. //得到系統的年月
  38. $tmp_date=date("Ym");
  39. //切出年份
  40. $tmp_year=substr($tmp_date,0,4);
  41. //切出月份
  42. $tmp_mon =substr($tmp_date,4,2);
  43. $tmp_nextmnoth=mktime (0,0,0,$tmp_mon 1,1,$tmp_year);
  44. $tmp_forwardmnoth=mktime(0,0,0,$tmp_mon-1,1,$tmp_year);
  45. //得到當前月的下一個月
  46. $fm_next_mnoth=date("Ym",$tmp_nextmonth);
  47. //得到當月的上一個月
  48. $fm_forward_mnoth=date("Ym",$tmp_forwardmonth);?>
  49. $d=array("日","一","二","三","四","五","六");
  50. $whatday ="星期".$d[date("w",strtotime($today))]; //取得今天星期幾
  51. $time = abs((strtotime("2008-12-25") - strtotime( date("Y-m-d")))/86400);/取得兩個日期之間的天數差
  52. ?>
複製程式碼
對於每個類型擁有的值範圍以及並且指定日期何時間值的有效格式的描述請參閱7.3.6 日期和時間類型。

這裡是一個使用日期函數的範例。 選擇所有記錄,其date_col的值是在最後30天以內:

  1. mysql> SELECT something FROM table
  2. WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) 🎜>複製程式碼

DAYOFWEEK(date) 傳回日期date的星期索引(1=星期日,2=星期一, …7=星期六)。這些索引值對應於ODBC標準。

  1. mysql> select DAYOFWEEK('1998-02-03');
  2. -> 3
複製程式碼🎜>
WEEKDAY(date) 傳回date的星期索引(0=星期一,1=星期二, ……6= 星期日)。

  1. mysql> select WEEKDAY('1997-10-04 22:23:00');
  2. -> 5
  3. ('1997-11-05');
  4. -> 2
複製程式碼
DAYOFMONTH(date) 返回date的月份中日期,在1到31範圍內。

  1. mysql> select DAYOFMONTH('1998-02-03');
  2. -> 3
複製程式碼🎜>DAYOFYEAR(date) 返回date在一年中的日數, 在1到366範圍內。

    mysql> select DAYOFYEAR('1998-02-03');
  1. -> 34
複製程式碼🎜>
MONTH(date) 返回date的月份,範圍1到12。

mysql> select MONTH('1998-02-03');
    -> 2
  1. 複製程式碼
DAYNAME(date) 返回date的星期名字。

mysql> select DAYNAME("1998-02-05");
    -> 'Thursday'
  1. 代碼
MONTHNAME(date) 返回date的月份名字。

mysql> select MONTHNAME("1998-02-05");
-> 'February'
  1. -> 'February'
複製>代碼
QUARTER(date) 返回date一年中的季度,範圍1到4。

  1. mysql> select QUARTER('98-04-01');
  2. -> 2
🎜>WEEK(date)   WEEK(date,first) 對於星期日是一周的第一天的地方,有一個單一參數,傳回date的周數,範圍在0到52。2個參數形式WEEK()允許 你指定星期是否開始於星期日或星期一。如果第二個參數是0,則星期從星期日開始,如果第二個參數是1, 從星期一開始。

    mysql> select WEEK('1998-02-20');
  1. -> 7
  2. mysql> select WEEK('2988-0 -20',0);
  3. -> 7
  4. mysql> select WEEK('1998-02-20',1);
  5. -> 8
複製程式碼
YEAR(date) 返回date的年份,範圍在1000到9999。

    mysql> select YEAR('98-02-03');
  1. -> 1998
複製程式碼
HOUR(time) 返回time的小時,範圍是0到23。

    mysql> select HOUR('10:05:03');
  1. -> 10
複製程式碼
🎜>MINUTE(time) 返回time的分鐘,範圍是0到59。

    mysql> select MINUTE('98-02-03 10:05:03');
  1. -> 5
複製程式碼
SECOND(time) 回來time的秒數,範圍是0到59。

    mysql> select SECOND('10:05:03');
  1. -> 3
複製程式碼
🎜>PERIOD_ADD(P,N) 增加N個月到階段P(以格式YYMM或YYYYMM)。以格式YYYYMM傳回值。注意階段參數P不是日期值。

    mysql> select PERIOD_ADD(9801,2);
  1. -> 199803
複製碼>
PERIOD_DIFF(P1,P2) 傳回在期間P1和P2之間月數,P1和P2應該以格式YYMM或YYYYMM。注意,時期參數P1和P2不是日期值。

mysql> select PERIOD_DIFF(9802,199703);
-> 11
  1. >

    DATE_ADD(date,INTERVAL expr type)   DATE_SUB(date,INTERVAL expr type)   ADDDATE(date,INTERVAL expr type)   SUBDATE(date,INTERVAL expr type) 這些功能執行日期運算。對於MySQL 3.22,他們是新的。 ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同義詞。 在MySQL 3.23中,你可以使用 和-而不是DATE_ADD()和DATE_SUB()。 (見例子)date是一個指定開始日期的 DATETIME或DATE值,expr是指定加到開始日期或從開始日期減去的間隔值一個表達式,expr是一個字串;它可以以 一個“-”開始表示負間隔。 type是一個關鍵字,指明表達式應該如何解釋。 EXTRACT(type FROM date)函數從日期 中傳回“type”間隔。下表顯示了type和expr參數怎樣被關聯: type值 意義 期望的expr格式 SECOND 秒 SECONDS MINUTE 分鐘 MINUTES HOUR 時間 HOURS DAY 天 DAYS MONTH 月 MONTHS YEAR 年 YEARS MINUTE_SECOND 分鐘和秒 "MINUTES:SECONDS" HOUR_MINUTE 小時和分鐘 "HOURS:MINUTES" DAY_HOUR 天和小時 "DAYS HOURS" YEAR_MONTH 年和月 "YEARS-MONTHS" HOUR_SECOND 小時, 分鐘, "HOURS:MINUTES:SECONDS" DAY_MINUTE 天, 小時, 分鐘 "DAYS HOURS:MINUTES" DAY_SECOND 天, 小時, 分鐘, 秒 "DAYS HOURS:MINUTES:SECONDS"

    MySQL在expr格式中允許任何標點分隔符號。表示顯示的是建議的分隔符號。如果date參數是一個DATE值並且你的計算僅僅 包含YEAR、MONTH和DAY部分(即,沒有時間部分),結果是DATE值。否則結果就是一個DATETIME值。

    1. mysql> SELECT "1997-12-31 23:59:59" INTERVAL 1 SECOND;
    2. -> 1998-01-01 00:001 00:001 :00
    3. mysql> SELECT INTERVAL 1 DAY "1997-12-31";
    4. -> 1998-01-01
    5. mysql> SELECT "1998-01-01" - INTERVAL 1OND
    6. -> 1997-12-31 23:59:59
    7. mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
    8. INTERVAL 1 SECOND);
    9. -> 1998-01-98-01- 01 00:00:00
    10. mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
    11. INTERVAL 1 DAY);
    12. -> 1998-01-01 23:59:
    13. mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
    14. INTERVAL "1:1" MINUTE_SECOND);
    15. -> 1998-01-01 00:01:00 mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
    16. INTERVAL "1 1:1:1" DAY_SECOND);
    17. -> 1997-12-30 22:58:59
    18. mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
    19. INTERVAL "-1 10" DAY_HOUR);
    20. -> 1997-12-30 14:00:00
    21. mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
    22. -> 1997-12-02
    23. mysql> SELECT EXTRACT(YEAR FROM "1999-07-02")
    24. ; -> 1999
    25. mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
    26. -> 199907
    27. mysql> SELECT EXTRACT(DAY_MINUTUTE FROM-99-1 :02:03");
    28. -> 20102
    複製代碼

    如果你指定太短的間隔值(不包括type關鍵字期望的間隔部分),MySQL假設你省掉了間隔值的最左面部分。例如, 如果你指定一個type是DAY_SECOND,值expr被希望有天、小時、分鐘和秒部分。如果你像"1:10"這樣指定值, MySQL假設日子和小時部分是遺失的並且值代表分鐘和秒。換句話說,"1:10" DAY_SECOND以它等價於"1:10" MINUTE_SECOND 的方式解釋,這對那MySQL解釋TIME值表示經過的時間而非作為一天的時間的方式有二義性。如果你使用確實不正確的日期, 結果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR且結果日期大於新月份的最大值天數,日子在新月用最大的天調整。

    1. mysql> select DATE_ADD('1998-01-30', Interval 1 month);
    2. -> 1998-02-28
    複製程式碼

    注意,從前面的例子中詞INTERVAL和type關鍵字不是區分大小寫的。 TO_DAYS(date) 給出一個日期date,傳回一個天數(從0年的天數)。

    1. mysql> select TO_DAYS(950501);
    2. -> 728779
    3. my> select TO_DAYS('1997); 🎜>-> 729669
    複製程式碼
    TO_DAYS()不打算用於使用格列高里曆(1582)出現前的值。

    FROM_DAYS(N) 給出一個天數N,回傳一個DATE值。

    1. mysql> select FROM_DAYS(729669);
    2. -> '1997-10-07'

    TO_DAYS()不打算用於使用格列高里曆(1582)出現前的值。

    DATE_FORMAT(date,format) 根據format字串格式化date值。下列修飾符可以用在format字串中: %M 月名(January……December) %W 星期名字(Sunday…Saturday) %D 有英文字首的月份的日期(1st, 2nd, 3rd, 等等。) %Y 年, 數字, 4 位 %y 年, 數字, 2 位 %a 縮寫的星期名字(Sun…Sat) %d 月份中的天數, 數字(00……31) %e 月份的天數, 數字(0……31) %m 月, 數字(01……12) %c 月, 數字(1……12) %b 縮寫的月份名字(Jan……Dec) %j 一年中的天數(001……366) %H 小時(00……23) %k 小時(0……23) %h 小時(01……12) %I 小時(01……12) %l 小時(1……12) %i 分鐘, 數字(00……59) %r 時間,12 小時(hh:mm:ss [AP]M) %T 時間,24 小時(hh:mm:ss) %S 秒(00……59) %s 秒(00……59) %p AM或PM %w 一個星期中的天數(0=Sunday …6=Saturday ) %U 星期(0……52), 這裡星期日是星期的第一天 %u 星期(0……52), 這裡星期一是星期的第一天 %% 一個文字「%」。

    所有的其他字元不做解釋被複製到結果中。

    1. mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
    2. - > 'Saturday October 1997'
    3. mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
    4. -> '22:23:00 '
    5. mysql> select DATE_FORMAT('1997-10-04 22:23:00',
    6. '%D %y %a %d %m %b %j');
    7. -> '4th 97 Sat 04 10 Oct 277'
    8. mysql> select DATE_FORMAT('1997-10-04 22:23:00',
    9. '%H %k %I %r %T %S %w'); 🎜>-> '22 22 10 10:23:00 PM 22:23:00 00 6'
    複製程式碼

    複製程式碼

    在格式修飾符字元前需要%。在MySQL更早的版本中,%是可選的。
    TIME_FORMAT(time,format) 這像上面的DATE_FORMAT()函數一樣使用,但是format字串只能包含處理小時、分鐘和秒的那些格式修飾符。 其他修飾符產生一個NULL值或0。 CURDATE()   CURRENT_DATE 以'YYYY-MM-DD'或YYYYMMDD格式傳回今天日期值,取決於函數是在一個字串還是數字上下文被使用。
    1. mysql> select CURDATE();
    -> '1997-12-15'
    mysql> select CURDATE() 0 mysql> select CURDATE() 0 -> 19971215

    複製程式碼

    CURTIME()   CURRENT_TIME 以'HH:MM:SS'或HHMMSS格式傳回目前時間值,取決於函數是在一個字串還是在數字的上下文中被使用。
    1. mysql> select CURTIME();
    -> '23:50:26'
    mysql> select CURTIME() 0 -> 235026

    複製程式碼

    NOW()   SYSDATE()   CURRENT_TIMESTAMP 以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式傳回目前的日期和時間,取決於函數是在一個字串還是在數字的 上下文被使用。
    1. mysql> select NOW();
    -> '1997-12-15 23:50:26'
    mysql> select NOW( ) 0; -> 19971215235026

    複製程式碼

    UNIX_TIMESTAMP()   UNIX_TIMESTAMP(date) 如果沒有參數調用,則傳回一個Unix時間戳記(從'1970-01-01 00:00:00'GMT開始的秒數)。如果UNIX_TIMESTAMP()用一 個date參數被調用,它會傳回從'1970-01-01 00:00:00' GMT開始的秒數值。 date可以是一個DATE字串、一個DATETIME 字串、一個TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地時間的一個數字。 mysql> select UNIX_TIMESTAMP();
    -> 882226357
    mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00'); 🎜>複製程式碼

    當UNIX_TIMESTAMP被用於一個TIMESTAMP列,函數將直接接受值,沒有隱含的「string-to-unix-timestamp」轉換。

    FROM_UNIXTIME(unix_timestamp) 以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式傳回unix_timestamp參數所表示的值,取決於函數是在一個字串 還是或數字上下文中被使用。
    1. mysql> select FROM_UNIXTIME(875996580);
    2. -> '1997-10-04 22:23:00'y🟇= (875996580) 0;
    3. -> 19971004222300
    複製程式碼

    FROM_UNIXTIME(unix_timestamp,format) 傳回表示 Unix 時間標記的字串,根據format字串格式化。 format可以包含與DATE_FORMAT()函數列出的條 目同樣的修飾符。

    1. mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
    2. '%Y %D %M %h:%i:%s %x');
    3. -> '1997 23rd December 03:43:30 x'
    複製程式碼

    SEC_TO_TIME(seconds) 傳回seconds參數,變換成小時、分鐘和秒,值以'HH:MM:SS'或HHMMSS格式化,取決於函數是在一個字串還是在數字 上下文中被使用。

    1. mysql> select SEC_TO_TIME(2378);
    2. -> '00:39:38'
    3. mysql> selectlect_TO_TIME(
    4. -> 3938
    複製程式碼

    TIME_TO_SEC(time) 傳回time參數,轉換成秒。

    1. mysql> select TIME_TO_SEC('22:23:00');
    2. -> 80580
    3. mysql> select TIME_TO. :38');
    4. -> 2378
    複製程式碼


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!