web-dev-qa-db-ja.com

タイムスタンプを00:00:00に保存します

時間コンポーネントを00:00:00としてデータベースにタイムスタンプを保存したいと思います。
次のコード:

$start_date = Carbon::createFromFormat('d-m-Y', $date_interval["start_date"]); 
$end_date = Carbon::createFromFormat('d-m-Y', $date_interval["end_date"]); 

時刻を指定せずに日付のみを指定すると、現在の時刻が日付に追加されます。
後でデータベースから内部整数を取得する必要があるため、これが必要です。これは1日の始まりになります。

この「一日の始まり」を保存するための最良の方法は何ですか?

14
Trace

私は通常、通話で日付を設定してから、時刻を00:00にリセットします。

Carbon::setTime(0, 0, 0);  // from the parent, DateTime class

このクラスには、適切な値を設定するCarbon :: startOfDay()メソッドもあります。

public function startOfDay()
{
    return $this->hour(0)->minute(0)->second(0);
}
18
Alister Bulman

安全のために、->endOfDay()または->startOfDay()を使用してCarbonに1日の終わりまたは始まりを決定させてください。あなたにもっと合うものを選んでください。

Carbon::createFromFormat('d-m-Y', $date_interval["start_date"])->endOfDay();
Carbon::createFromFormat('d-m-Y', $date_interval["start_date"])->startOfDay();
21
Abdalla Arbab

Carbon::createFromFormat()は、欠落している部分がゼロではなく現在の日付または時刻に設定されるという点で、その親とは異なります。 \DateTime::createFromFormat()のように動作させるには、マニュアル( https://www.php.net)で説明されているように、|または!形式の文字を使用します。 /manual/en/datetime.createfromformat.php )。

例:

$midnight = Carbon::createFromFormat(
    'Y-m-d|', // or: '!Y-m-d'
    $date
);
0
Reto Kohli

あなたはそれをすべきではありません。

start_date DATE NULL DEFAULTNULL`を設定します

MySQLを0000-00-00ではなくNULLにデフォルト設定する必要があります

0
unixmiah