web-dev-qa-db-ja.com

列タイムスタンプのデフォルトのcurrent_dateでmysqlテーブルを作成する方法は?

列CURRENT_DATE()にデフォルト値を持つmysqlテーブルを作成する必要があります

やってみる

DROP TABLE IF EXISTS `visitors`;
CREATE TABLE `visitors` (
  `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `ip` VARCHAR(32) NOT NULL,
  `browser` VARCHAR(500) NOT NULL,
  `version` VARCHAR(500) NOT NULL,
  `platform` ENUM('w','l','m') NOT NULL,
  `date` TIMESTAMP NOT NULL DEFAULT CURRENT_DATE(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `person` (`ip`,`date`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

しかし、それはエラーを書いています

Query: CREATE TABLE `visitors` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `ip` VARCHAR(32) NOT NULL, `browser` VARCHAR(500) NO...

Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_DATE() NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `person` (`ip`,`date`)
) ENGINE=INNODB AUTO_INCREMENT=1' at line 7

Execution Time : 0 sec
Transfer Time  : 0 sec
Total Time     : 0.063 sec

何が問題ですか?

フルタイムの情報ではなく、日付のみを一意にする必要があります...

手伝って頂けますか?

9

CURRENT_DATE()関数の代わりにCURRENT_TIMESTAMP関数を使用します

これを試して:

DROP TABLE IF EXISTS `visitors`;
CREATE TABLE `visitors` (
  `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `ip` VARCHAR(32) NOT NULL,
  `browser` VARCHAR(500) NOT NULL,
  `version` VARCHAR(500) NOT NULL,
  `platform` ENUM('w','l','m') NOT NULL,
  `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `person` (`ip`,`date`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
21
Saharsh Shah

クエリでCURRENT_DATE()をNOW()に置き換えるだけです。私はそれを試してみましたが、大丈夫です。

0
J.P.A

これは少し遅れるかもしれませんが、他の人にとっては役立つと思います。

私のアプローチは、getdate()を次のように使用することです。

[TimeStamp] [datetime] NOT NULL CONSTRAINT [DF_myTable_TimeStamp] DEFAULT(getdate())。

[TimeStamp]は問題の列です。

結果は次のようになります:2017-11-02 11:58:34.203

これをトリミングするには、次を使用します

@mydate datetimeを宣言します

@mydate = '2017-11-02 11:58:34.203'に設定します

SELECT try_convert(nvarchar(20)、@mydate、120)

この最終結果は次のとおりです:2017-11-02 11:58:34

MSSQL Management Studioで実際に設定できます

0
omostan