简体   繁体   中英

how to enter time-stamps in mysql from an input

I need to insert Timestamp in MySQL from input in Laravel application

data coming from my input is in this format 12/27/2017 MM/DD/YYYY how can I convert it into this format Ymd H:i:s

any alternatives are highly appreciated like pass data from the input which input we use so, I can get data in timestamp format.

and at the end, I need to sort data order by date

If you want to do it in Laravel way you can use mutator and Carbon . This is an example of model:

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model

class Post extends Model {

    protected $dates = ['date'];


    public function setDateAttribute($value)
    {
        $this->attributes['date'] = Carbon::createFromFormat('d/m/Y', $value);
    }
}

Now when you update or create post date attribute will be automatically converted. So you can save it like this:

$post = new Post(); 
$post->date = '16/12/2017';
$post->save();

You can use DateTime:

$inputDate = \DateTime::createFromFormat('m/d/Y', '12/27/2017');
$formatedDate = $inputDate->format('Y-m-d H:i:s');

As for me I done date conversion in this way, for example to making invoices. I hope this can be done by PHP.

$input_date = "12/15/2017"; // input in MM/DD/YYYY
$output_date = date('Y-m-d H:i:s',strtotime($input_date)); //set output to 2017-12-15 00:00:00
echo $output_date; //produce output

It generates the following result

2017-12-15 00:00:00

I hope this will work. If you want only date, you can omit H:i:s based on your purpose. Thank you.

$date=date_create("12/27/2017");
$rawDate =  date_format($date,"Y/m/d");// Produced - 2017/12/27
echo  str_replace('/','-',$rawDate ); // Output - 2017-12-27
  • to add H:i:s , if there is no time just add 00:00:00 at the end of date begins with space.

  • If you're dealing with created_at or updated_at which Laravel create for every table, you must add 00:00:00 to end of date to get all data begins with that respective date

This solution worked for me if we want the format of date from input is different from the format the timestamp accepts

Laravel way of doing is

  protected $fillable = ['organization_name', 'job_apply_link', 'job_description', 'city_id', 'province_id', 'sector_id', 'image_file', 'test_id', 'newspaper_id', 'catagory_id', 'slug', 'meta_keywords', 'meta_description', 'job_title', 'created_at'];  

 public function setCreatedAtAttribute($value)
    {
        $inputDate = \DateTime::createFromFormat('m/d/Y', $value);
        $formatedDate = $inputDate->format('Y-m-d H:i:s');
        $this->attributes['created_at'] = $formatedDate;

    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM