0

以前のバージョンの MySQL を使用して数年前にこれを実行して、このテーブルを作成しようとしましたが、うまくいきました。最近のバージョンの MySQL では、timestamp(8) に問題があるようです。

CREATE TABLE top_hits (
  sid int(11),
  ip varchar(20),
  cdate timestamp(8)
)

行 4 のタイムスタンプ(8) の代わりに何を使用できますか? YYYYMMDD

cdate timestamp(8)

前もって感謝します。

4

3 に答える 3

3

DATE型が必要です。これは、年、月、日を格納します。

出力(YYYYMMDD)をフォーマットする必要がある場合は、DATE_FORMAT関数を使用してください。

于 2012-12-26T07:29:49.457 に答える
3

(8)フィールド定義の一部は、次のものには影響しません。

  • 列のサイズ (バイト単位)
  • 格納されている値の範囲 (1970 年から 2038 年半ばまで)
  • 時、分、秒を格納できるかどうか

(8)部分は表示サイズを指定します。を実行するSELECTと、MySQL はここで説明されているようXYZに、タイムスタンプから日付の最初の部分を返します。

したがって、テーブル作成クエリから表示部分を削除するだけです。これにより、列が作成されtimestampます。MySQL 関数または PHP を使用して、タイムスタンプをフォーマットできます (たとえば、時間部分を切り取るなど)。

またはDATE、時間部分をまったく格納しないデータ型を使用します。

于 2012-12-26T07:45:34.387 に答える
2

の構文

timestamp(N)

mysql 5 の時点で非推奨です

あなたはあなたの選択した日付を選択することができます

SELECT date(ts)+0 from t;

DATETIME データ型は 8 バイトのストアを使用しますタイムスタンプは 4 バイトを使用し、日時はより広い範囲の日付を使用します

于 2012-12-26T06:08:48.110 に答える