30

I can't believe I can't do this, but I want to be able to store the current date and time from php in to a mysql table.

The column in the table is type datetime. I've tried this

$current_date = date("Y-m-d");
$my_date = strtotime($current_date);
INSERT INTO my_table (date_time) VALUES ('$my_date')

but my timestamp comes up as 0000-00-00 00:00:00

This must be so easy to do but I just can't get it working! I want to use the timestamp from php rather than using the mysql now() function

1
  • 1
    if the mysql field is a DATETIME, drop the strtime call Commented Dec 2, 2012 at 16:26

7 Answers 7

53

Try this:

$my_date = date("Y-m-d H:i:s");
INSERT INTO my_table (date_time) VALUES ('$my_date');

In the date-format parameter of the date function, use :
'H' for 24hr format
'h' for 12hr format

Sign up to request clarification or add additional context in comments.

Comments

24

Don't save it as the Unix Timestamp (which strtotime() outputs), but as "2012-12-02 13:00" into the DATETIME column.

1 Comment

Thanks guys, I feel so dumb!
3

set the 'type' of column named 'date_time' as 'DATETIME' and run the following query:

INSERT INTO my_table (`date_time`) VALUES (CURRENT_TIMESTAMP)

Comments

2

Create column type TIMESTAMP and set it to NOT NULL. Then pass in NULL during INSERT and MySQL will insert current date and time. This works for me.

Comments

1

If you have the date in PHP as a timestamp, you can use the FROM_UNIXTIME function [1]

mysql> insert into table_name values (FROM_UNIXTIME(your_timestamp_here));

Hope it helped

[1]. https://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_from-unixtime

Comments

1

Remove the strtotime()

$current_date = date("Y-m-d");
INSERT INTO my_table (date_time) VALUES ('$current_date')

If you want to include the hour, minutes and seconds, $current_date = date("Y-m-d H:i:s");

Comments

0

You need to be mindful about single vs double quotes in PHP. Single quote enclosed strings do not get parsed, while double-quote enclosed strings get parsed, so ('$current_date') will result in $current_date, but not the actual php set value.

See the example below:

$s = "dollars";
echo 'This costs a lot of $s.'; // This costs a lot of $s.
echo "This costs a lot of $s."; // This costs a lot of dollars.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.