how to insert today date in mysql using php - 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);

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

MySql timestamp - different time after update all rows

I need update all rows in my events table. There is column event_date with timestamp datatype.
But if i update each row (event_date column) with new date (expample: 2015-12-12 12:00:00) then i have some rows with value 2015-12-12 13:00:00.
Point is - why are some rows correct and some are +1h?
In PHP i am using Nette framework and his DateTime object which extends standart PHP DateTime...
Any ideas, hints why this happends?
EDIT: query looks like this:
UPDATE `events`
SET `event_date`='2016-2-13 12:00:00', `event_date_to`=NULL
WHERE (`id` = 203)
Values in php i am setting like this:
$row->event_date = date("Y-m-d H:i:s", $oldRow['event_date']);
Problem starts sooner - in this table was dates like 2016-2-13 00:00:00 but after select and echo dates changed to 2016-2-12 23:00:00 - but no all rows... only someones. So i make select:
select events.id, events.event_date, events.event_date_to,
concat(year(event_date), '-', month(event_date), '-',
day(event_date), ' 12:00:00') as new_event_date,
IF(events.event_date_to IS NULL,null, concat(year(event_date_to),
'-', month(event_date_to), '-', day(event_date_to), ' 12:00:00')) as
new_event_date_to from events
That select give me rows like this:
769,2014-04-22 19:30:00,2014-04-22 21:45:00,2014-4-22 12:00:00,2014-4-22 12:00:00
It means: id, event_date(real db value), event_date_to(real db value), event_date(new value for insert), event_date_to(new value for insert - can be NULL)
And saved to csv file... This file i am parsing now and in foreach updating each row...
I checked ALL queries and times are OK (12:00:00) so i don't understand and stuck :)
Your MySQL timezone is probably dissimilar to that of your code (specified in php.ini).
To test this, try inserting this value into a DATETIME or TIMESTAMP column:
foo_column = NOW()
Concurrently, insert $datetime into a separate column - lets say $datetime simply equals the current time: date('Y-m-d H:i:s', time())
bar_column = '$datetime'
If the values are different - then there you have it. Your database is essentially interpreting time differently to your php.

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.

Store php datetime in mysql database

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

save datetime in mysql using php

I have table in mysql database which have field with datatype is datetime.
I want to save the datetime in this minute, for this I use " Now() ", but it does not work,
It just save 000000000000 in databaes.
If you use php, the correct format is:
date("Y-m-d H:i:s");
UPDATE:
Minutes are expressed as i not m
If you've got a timestamp in PHP check out FROM_UNIXTIME()
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_from-unixtime
$tstamp = time();
$query = "INSERT INTO `table` VALUES (FROM_UNIXTIME($tstamp))";
INSERT ... (Now(), ...)
without additional quotes around the function Now()
I would use function time() too, then it's easy to output different kind of timestamps with date().
$query = "INSERT INTO tbl VALUES (".time().");";
date("g") this will return 12-hour format of an hour without leading zeros. For more options see http://php.net/manual/en/function.date.php
An example of a PHP script which sets a date in MySQL manually,
<?php
$query_date = "INSERT INTO tablename (col_name, col_date) VALUES ('DATE: Manual Date', '2008-7-04')”;
mysql_query($query_date) or die(mysql_error());
?>
An example of a PHP script which sets a date in MySQL Automatic,
<?php
$query_date = "INSERT INTO tablename (col_name, col_date) VALUE ('DATE: Auto CURDATE()', CURDATE() )”;
mysql_query($query_date) or die(mysql_error());
?>
try this: set the 'type' of column named 'date_time' as 'DATETIME' and run the following query:
INSERT INTO my_table (date_time) VALUES (CURRENT_TIMESTAMP)

Categories