Home >> FAQs/Tutorials >> MySQL Tutorials >> Index

MySQL FAQs - Managing Tables and Running Queries with PHP Scripts

By: FYIcenter.com

Part:   1  2  3  4  5   6  7  8 

(Continued from previous part...)

How To Quote Date and Time Values in SQL Statements?

If you want to provide date and time values in a SQL statement, you should write them in the format of "yyyy-mm-dd hh:mm:ss", and quoted with single quotes ('). The tutorial exercise below shows you two INSERT statements. The first one uses a hard-code date value. The second one uses the date() function to return a date value.

<?php
  include "mysql_connection.php";

  $notes = "Added long time ago!";
  $time = "1999-01-01 01:02:03";
  $sql = "INSERT INTO fyi_links (id, url, notes, time)" 
      . " VALUES ("
      . " 301, 'netscape.com', '".$notes."', '".$time."')";
  if (mysql_query($sql, $con)) {
    print(mysql_affected_rows() . " rows inserted.\n");
  } else {
    print("SQL statement failed.\n");
  }

  $notes = "Added today!";
  $time = date("Y-m-d H:i:s");
  $sql = "INSERT INTO fyi_links (id, url, notes, time)"
      . " VALUES ("
      . " 302, 'myspace.com', '".$notes."', '".$time."')";
  if (mysql_query($sql, $con)) {
    print(mysql_affected_rows() . " rows inserted.\n");
  } else {
    print("SQL statement failed.\n");
  }

  mysql_close($con); 
?>

If you run this script, you will get something like this:

1 rows inserted.
1 rows inserted.

How To Display a Past Time in Days, Hours and Minutes?

You have seen a lots of Websites are displaying past times in days, hours and minutes. If you want to do this yourself, you can use the TIMEDIFF() SQL function. Note that the TIMEDIFF() function can only handle time range within 839 hours (about 33 days). So it works only for past times within one month or so.

The following tutorial exercise shows you how to use TIMEDIFF() to present a past time in days, hours, and minutes:

<?php
  include "mysql_connection.php";

  $pastTime = "2006-06-29 04:09:49";

  $sql = "SELECT HOUR(timeDiff) AS hours,"
    . " MINUTE(timeDiff) AS minutes FROM ("
    . " SELECT TIMEDIFF(NOW(), '".$pastTime."')"
    . " AS timeDiff FROM DUAL) subQuery";
  print("SQL = $sql\n");
  $rs = mysql_query($sql, $con);
  while ($row = mysql_fetch_assoc($rs)) {
    print("$pastTime was ".$row['hours']." hours, "
      . $row['minutes']." minutes ago.\n");
  }
  mysql_free_result($rs);

  $sql = "SELECT (HOUR(timeDiff) DIV 24) AS days,"
    . " (HOUR(timeDiff) MOD 24) AS hours,"
    . " MINUTE(timeDiff) AS minutes FROM ("
    . " SELECT TIMEDIFF(NOW(), '".$pastTime."')"
    . " AS timeDiff FROM DUAL) subQuery";
  print("SQL = $sql\n");
  $rs = mysql_query($sql, $con);
  while ($row = mysql_fetch_assoc($rs)) {
    print("$pastTime was ".$row['days']." days, "
      . $row['hours']." hours, "
      . $row['minutes']." minutes ago.\n");
  }
  mysql_free_result($rs);

  mysql_close($con); 

If today is you run this script, you will get something like this:

SQL = SELECT HOUR(timeDiff) AS hours, 
   MINUTE(timeDiff) AS minutes FROM (
   SELECT TIMEDIFF(NOW(), '2006-06-29 04:09:49') 
   AS timeDiff FROM DUAL) subQuery

2006-06-29 04:09:49 was 115 hours, 2 minutes ago.

SQL = SELECT (HOUR(timeDiff) DIV 24) AS days, 
   (HOUR(timeDiff) MOD 24) AS hours,
   MINUTE(timeDiff) AS minutes FROM (
   SELECT TIMEDIFF(NOW(), '2006-06-29 04:09:49')
   AS timeDiff FROM DUAL) subQuery

2006-06-29 04:09:49 was 4 days, 19 hours, 2 minutes ago.

Warning again, this script only works if the past time is less than 33 days ago.

(Continued on next part...)

Part:   1  2  3  4  5   6  7  8 


Selected Developer Jobs:

More...