11

私の最初のアプローチは次のとおりです。

$current = time(); // save this to column CURRENT_TIME with column type VARCHAR

//retrieve it like this
$retrieved = mysql_query(....) //assume query for getting the stored time value
$time = strtotime($retrieved);

私は次のアプローチに出くわしました:

  1. gmstrftimegmtの処理に使用
  2. 列のINT代わりに使用VARCHAR
  3. mysql関数を使用するCURTIMECURDATE
  4. UNIX_TIMESTAMPmysql関数を使用します

いずれも、DATETIMEまたはTIMESTAMPmysqlvarタイプを使用していませんでした。

これに対してより良いアプローチがありますか?

4

5 に答える 5

19

mysqlタイムスタンプ(YYYY-MM-DD HH:MM:SS)フィールドタイプを使用して、時間と日付の変数をmysqlに格納することをお勧めします。

$sDate = date("Y-m-d H:i:s"); // 2015-04-07 07:12:51
mysql_query("insert into `table_name` set `created_on` = '$sDate'");

これにより、mysql関数を使用して、日付を比較したり、時差を計算したりすることができます。これは、mysqlクエリで直接実行できます。

また、 strtotime()関数を使用していつでもタイムスタンプを取得できます。

$result = mysql_query("select `created_on` from `table_name`");
$row = mysql_fetch_row($result);
$iTimestamp = strtotime($row[0]); // 1428390771
于 2010-02-24T06:29:36.840 に答える
3

MySQLで値型を使用し、TIMESTAMPMySQLに独自の値型を使用させますCURRENT_TIMESTAMP

于 2010-02-24T09:06:44.067 に答える
1

さて、あなたはMySQLTIMESTAMPフィールドをPHPTime()値に変えることができますstrtotime()

次に、PHP Time()値をMySQLTIMESTAMP値に正しく変換する関数を作成する必要があります。

于 2010-02-24T05:46:33.653 に答える
0

intとして格納する方が論理的です。日付の行形式を保存します。これを使用して、後で他の形式やより多くのデータを抽出できます。また、intとして保存します。

編集:For(Uni-TimeZone)application intは最速の方法であり、PHPには優れた時間変換ツールがあります。

于 2010-02-24T06:24:35.850 に答える
0

MySQLで使用される形式は、PHPで使用される形式と一致する必要はありません。どちらの側でも最適なものを選択してください。データベースには、理由から日付データ型があります。MySQLでは、次から選択できます。

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-types.html

PHPでは、基本的に3つのオプションがあります。

  • 古き良きタイムスタンプは扱いやすく、MySQLクエリで使用できます(FROM_UNIXTIME()およびUNIX_TIMESTAMP()を参照)が、範囲に重大な問題があります(1970年より前の日付では信頼できないため、不適切です)。誕生日用)。

  • DateTimeオブジェクトは強力で組み込みであり、範囲の問題はなく、タイムゾーンをサポートしています。ただし、いくつかの重要な方法が不足しているように見えるため、使用するのがあまり快適でない場合があります。

  • カスタムの日付オブジェクト(サードパーティまたは独自のDateTimeベース)を使用できます。

于 2010-02-24T08:32:00.280 に答える