Store php datetime in mysql database - php

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

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

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

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.

set the 'type' of column named 'date_time' as 'DATETIME' and run the following query:
INSERT INTO my_table (`date_time`) VALUES (CURRENT_TIMESTAMP)

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

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");

Related

Why would SQL update the date into tabel to 0000-00-00 00:00:00?

I am trying to update the field SEEN in a SQL table to the current time and date.
Here is the code:
$now=date('d-m-Y H:i:s',time());
$query="UPDATE mytable SET SEEN = '".$now."' WHERE ID_ITEM = ".$id_material;
$stmt=$dbh1->prepare($query);
$query ;
$stmt->execute();
It sets my SEEN field to 0000-00-00 00:00:00.
If I write a specific date directly into the query, say "2021-03-10 02:30:00" it would write that date into the SEEN field. But instead of $now, it would output 0s. And $now is fine, it outputs the correct timestamp.
The format you are using is not the same that MySQL DATETIME uses:
$now = (new DateTime("now"))->format("Y-m-d H:i:s");

How to insert the current date to database then retrieve it?

$query = mysql_query ('insert into pm timestamp values("'.strtotime("now").'")')
echo "<td>".date('d-M-Y H:i:s', $date3)."</td>
timestamp in database is INT(11)
I am able to get today date but I can't get the current time.
please help thank you !
You have to get the timestamp directly in your database with MySql and not with PHP. Change the type of your "timestamp" to timestamp and use the appropriate function "NOW()"
Your request would be like that : INSERT INTO table (timestamp) VALUES 'NOW()'
time();
Gives you current date and time in unix format - timestamp
$query = mysql_query ('insert into pm timestamp values("'.time().'")')
and after that when you retreive field value to var $date3 just echo it like you did
echo "<td>".date('d-M-Y H:i:s', $date3)."</td>";
If you want timestamp, use time()
php > echo time();
1406880195

how to insert today date in mysql using php

How to insert today date in mysql using php.date format is like Dec-10-2013.i tried
$sql="insert into tbl_name (colm1,colm2) values (1,now())";
Here value inserted in colm2 is 2013-12-11.
What you want to do is save your dates as TIMESTAMP or something similar. When you retrieve it, you can format it. You can insert your dates with 'NOW()' or a given format if they are different.
If you want to display the time, you can do: new DateTime($row['my_date']);
For inserting you can use the same method: (new DateTime($date))->getTimestamp()
Why DateTime?
- Because it works with timezones.
Why not store it as Dec-10-2013?
- Because you cannot do anything with a varchar pretending to be a date. You have a TIMESTAMP field type for that
You can useDATE_FORMAT to format the date on the fly:
Change your query to:
INSERT INTO tbl_name (colm1,colm2)
VALUES (1, DATE_FORMAT(NOW(),'%b-%d-%Y'))
Example:
mysql> select DATE_FORMAT(NOW(),'%b-%d-%Y');
+-------------------------------+
| DATE_FORMAT(NOW(),'%b-%d-%Y') |
+-------------------------------+
| Dec-11-2013 |
+-------------------------------+
1 row in set (0.00 sec)
See the MySQL documentation for a list of available formatting options.
If you want to do it PHP-side, you can use date_create():
$date = date_create()->format('M-d-Y');
Use DATE_FORMAT(NOW(),'%b %d %Y') .
For more info Date_Format
I can see in your question that your db timezone format is YYYY-MM-DD
$date = date("Y-m-d", strtotime($yourDate));
$sql="insert into tbl_name (colm1,colm2) values (1,{$date})";
EDIT:
'Dec-10-2013' is known format for php, so you can do this $yourDate = 'Dec-10-2013';
This is as close as I can get to your desired output right now, but I'll keep trying. Maybe if you replace the date input with a different letter, just try a bunch.
$CurDate = date("r");
$sql="INSERT INTO tbl_name (colm1,colm2)
VALUES (1,'$CurDate')";
you can try this
$date = date("M-d-Y");
$sql="insert into tbl_name (colm1,colm2) values (1,$date)";
first create the timestamp of today date
$date= strtotime("now");
insert into tablename value({$date});
To print the date again from database use this code
echo date("Y-m-d",$date);

PHP Insert Query - Date field 0000-00-00

I'm having trouble inserting a record with a date field. No matter what I do, the date field gets stored as '0000-00-00'. The value comes into the php script as a string in this format:
'9/13/2013'. I'm converting to a date using strtotime, then trying to insert the record. Here's the code. Why can't I get this to work? Thanks!
$my_date = strtotime($_POST['d']);
//die(date("Y-m-d", $my_date)); //<--outputs just fine if I uncomment this
$sql = "INSERT INTO locations (id, my_date) VALUES ('$id', '$my_date')";
$result = mysql_query($sql);
I'm converting to a date using strtotime
strtotime returns a unix timestamp (integer), not a date string. You can format it for MySQL before inserting with the date function:
$my_date = date('Y-m-d H:i:s', strtotime($_POST['d']));
Alternatively, you can use the DateTime class for this purpose.

Insert timestamp posted value in mysql in php

I have input where I get values like:
$water = 11/04/2013 00:00:00
(day/month/year) hour:minute:second
And a table definition:
CREATE TABLE `my_to` (
id_a INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
last_time timestamp ,
water timestamp
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
but when I am trying to do an insert I get no value in the table...
Should I convert the day or something?
supposing $water has a date and time value?
$timestamp = strtotime($water);
Insert into table .... $timestamp ?
You can use MySQL's STR_TO_DATE function:
INSERT INTO `table`( `date_field` )
VALUES( STR_TO_DATE( $water, '%d/%m/%Y %H:%i:%S' );
http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
Correct syntax is: 0000-00-00 00:00:00
so ..
$time = '11/04/2013 00:00:00';
$time = strtotime($time);
$time = date('Y-m-d H:i:s', $time);
# INSERT TIME...
The timestamp you want to insert must have the format YYYY-MM-DD HH:II:SS.
You can use date('Y-m-d H:i:s', strtotime($water)).
Hope this helps!
Timestamps in mysql must be in YYYY-MM-DD HH:II:SS format. You can do this in php with
Date('Y-m-d H:i:s', strtotime($water))
You could also use the FROM_UNIXTIME mysql function
water DATETIME
or fill the field with NOW() or CURRENT_TIMESTAMP
Be aware that strtotime() interprets that date in the format mm/dd/YYYY, and not as dd/mm/YYYY.
You should rearrange date in a different format (YYYY-mm-dd would be the best, imho).

Categories