web-dev-qa-db-ja.com

MySQLの現在の日時を取得する方法

現在の日付と時刻を挿入するために手動のクエリで使用できるDATETIMEのような値またはコマンドはありますか?

INSERT INTO servers (
  server_name, online_status, exchange, disk_space, network_shares
) VALUES(
  'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE' 'DATETIME' 
)

最後に引用符で囲まれたDATETIME値は、現在の日時を追加したい場所です。

131

NOW()を使うことができます:

INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares, c_time)
VALUES('m1', 'ONLINE', 'exchange', 'disk_space', 'network_shares', NOW())
232

CURRENT_TIMESTAMP() または now() を使用

好き

INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1','ONLINE','ONLINE','100GB','ONLINE',now() )

または

INSERT INTO servers (server_name, online_status, exchange, disk_space,
network_shares,date_time) VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE'
,CURRENT_TIMESTAMP() )

Date_timeを、時間を挿入するために使用したい列名に置き換えます。

28
Ankit Sharma

多くの受け入れられた答えがあるとしても、私はこの方法も可能であると思います:

次のように 'servers' テーブルを作成します

CREATE TABLE `servers`
(
      id int(11) NOT NULL PRIMARY KEY auto_increment,
      server_name varchar(45) NOT NULL,
      online_status varchar(45) NOT NULL,
      _exchange varchar(45) NOT NULL, 
      disk_space varchar(45) NOT NULL,
      network_shares varchar(45) NOT NULL,
      date_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
);

そしてあなたの _ insert _ ステートメントはであるべきです

INSERT INTO servers (server_name, online_status, _exchange, disk_space, network_shares)
VALUES('m1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE');

私の環境:

4GBのRAMを搭載したCore i3 Windowsラップトップ、そして私はMySQL Workbench 6.2(バージョン6.2.5.0ビルド397 64ビット)で上記の例をしました

23
Erandi

はい、CURRENT_TIMESTAMP()コマンドを使用できます。

こちらを参照してください。 日付と時刻の関数

5
Alec.
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())
2

データベース設計では、一貫性と索引付け/検索/比較のパフォーマンスのためにUnixtimeを使用することを強くお勧めします。

UNIX_TIMESTAMP() 

その後は常に 人間が読める形式に変換することができます 個々に最も便利であるように国際化することができます。

FROM_ UNIXTIME (unix_timestamp, [format ])
1
tony gil

デフォルト値をCURRENT_TIMESTAMPに変更すると、より効率的です。

ALTER TABLE servers MODIFY COLUMN network_shares datetime NOT NULL DEFAULT CURRENT_TIMESTAMP;
1
Ferhat KOÇER

正しい答えは SYSDATE() です。

INSERT INTO servers (
    server_name, online_status, exchange, disk_space,
    network_shares, date_time
)
VALUES (
    'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE', SYSDATE()
);

sysdate_is_now コマンドライン引数をTrueに設定することで、この動作を変更してMySQLにNOW()SYSDATE()と同じように動作させることができます。

NOW()(エイリアスとしてCURRENT_TIMESTAMP()を持つ)は、 微妙な の点でSYSDATE()と異なります。

SYSDATE()は実行した時刻を返します。これは、ステートメントの実行が開始された時刻を示す定数時間を返すNOW()の動作とは異なります。 (ストアドファンクションまたはトリガ内では、NOW()は、ファンクションまたはトリガ文の実行開始時刻を返します。)

Erandi で示されているように、新しい行を挿入したときに列にタイムスタンプが自動的に入力されるように、DEFAULT句を使用してテーブルを作成するのが最善です。

date_time datetime NOT NULL DEFAULT SYSDATE()

現在の日付を Epoch の形式にしたい場合は、 UNIX_TIMESTAMP() を使用できます。例えば:

select now(3), sysdate(3), unix_timestamp();

降伏する

+-------------------------+-------------------------+------------------+
| now(3)                  | sysdate(3)              | unix_timestamp() |
+-------------------------+-------------------------+------------------+
| 2018-11-27 01:40:08.160 | 2018-11-27 01:40:08.160 |       1543282808 |
+-------------------------+-------------------------+------------------+

関連する

0
codeforester

now()だけでなく、current_timestamp()localtimestamp()も使えます。表示タイムスタンプが正しくない主な理由は、NOW() を一重引用符で囲むことです ! MySQL Workbenchでは、このIDE mysql関数に一重引用符を追加したため、それが機能しませんでした。

MySQL Workbenchのように一重引用符で関数を使用しないでください。うまくいきません。

0
obohovyk