質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

699閲覧

SQLの実行コードの日付の記録についての疑問

yookoko

総合スコア62

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/02/07 06:39

編集2020/02/07 06:53

時間を記録するためのSQL実行のコードについて質問があります。
以下の2つのコードに違いはあるのか気になります。

  • 環境
  • mysql8
  • laravel6
  • now()はlaravelのhelperでCarbonの現在時刻が実行されるようです。

now()を2回実行してinsert

php

1// now() 2つに実行タイミングのズレが出て、時間の記録にズレが少しでも出るのか 2DB::table("test") 3 ->insert([ 4 "created_at" => now(), 5 "updated_at" => now(), 6 ]);

now()を変数に格納してからinsert

php

1$now = now(); 2 3DB::table("test") 4 ->insert([ 5 "created_at" => $now, 6 "updated_at" => $now, 7 ]);

お時間ありましたら、疑問にお答え頂けると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/07 06:42 編集

DBはMySQLですか? データベースは方言があり微妙に仕様も異なるので、とても大事な情報です。
yookoko

2020/02/07 06:54

情報を追記しました。質問の修正依頼ありがとうございます。
Y.H.

2020/02/07 07:06

質問で使用されているnow()はlaravelのヘルパー関数ですよね?
yookoko

2020/02/07 07:07

質問ありがとうございます。 はい。そのとおりです。carbonが利用されるようです。
guest

回答3

0

ベストアンサー

そもそも論ですが、「作成日時」「更新日時」であれば、DB側の設定次第で自動更新にできるので、わざわざ自前で入れる必要ないのでは?

本当に単に「違いがあるのか」だけだと、「例えば1000回ループで試して統計とってみては?」というアドバイスになります。

投稿2020/02/07 06:46

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yookoko

2020/02/07 06:55

あくまで疑問でしたので、自前入力をしていました。 回答ありがとうございます。実験してみたいと思います。
m.ts10806

2020/02/07 07:02

まず、やってみてから思った結果にならなかったときに質問された方が印象も違うと思います。 前提や背景は必須ですね。
guest

0

質問の意図としては
now()を2回呼ぶ場合、created_atupdated_atがずれる可能性があるか?
という事ですよね?
それをDBの機能を使えというのはちょっと回答がずれている様に思えます。

回答としては
ミリ秒が切り上がるタイミングで2回目のnow()が呼ばれた場合外れる可能性があります。

参考までにLaravelの実装箇所はここで、変数に代入してから使用するパターンとなっています。

https://github.com/laravel/framework/blob/6.x/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php#L37

投稿2020/02/07 07:49

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/02/07 08:02

「ずらしたくないなら」と思っての回答でした。 結局は単に興味っぽかったのでもう少し前提や背景探ってから回答した方が良かったと反省してます。 (ただ、まず試してから質問してねと言うのが回答の後半の本意です)
yookoko

2020/02/11 14:58

リンクと回答ありがとうございます。大変参考になりました。
guest

0

MySQLだとしたら、NOW()よりも SYSDATE() の方が、関数参照時のリアルな時刻になりそうな気がする。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.7 日付および時間関数

投稿2020/02/07 06:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yookoko

2020/02/07 06:55

リンクと回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問