MySQLで現在の日付と時刻を取得する方法は?


148

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

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

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



6
NOW()、dev.mysql.com/doc/refman/5.5/en/…を参照してください...そして、次回、少なくともいくつかの調査努力をあなたの質問に入れてください、これは簡単にグーグルできます(したがって、この質問に反対票を投じました)
dirkk 2013年

私の質問は、私が上記に投稿した構文でそれをどのように使用するべきかということを目的としていました。
Samuel Nicholson

1
これについては、フランシスコの回答を参照してください。しかし、これは非常に基本的なものであり、単なる関数呼び出しです。したがって、ここでも、質問を投稿する前に問題を調査する必要があります。また、SQLに関する指示を読むこともできます。
dirkk 2013年

7
皮肉な。あなたが得る答えを見つけることに力を注ぐとき...この答え!
ザック・スミス

回答:


266

使用できますNOW()

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

1
#1054-「フィールドリスト」の不明な列「スタンプ」-何か不足していますか?
Samuel Nicholson

44
スタンプを実際のフィールド名に置き換えてください。コピーして貼り付けるだけではありません。
francisco.preller 2013年

8
「日付」フィールドタイプの場合は、次も使用できますcurdate()
tandy

32

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を、時刻の挿入に使用する列名に置き換えます。


25

受け入れられる答えはたくさんありますが、この方法も可能だと思います。

次のように「サーバー」テーブルを作成します

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ビット)で上記の例を実行しました




2

正解はSYSDATE()です。

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

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

なお、NOW()(持つCURRENT_TIMESTAMP()別名として)とは異なるSYSDATE()微妙方法。

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

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

date_time datetime NOT NULL DEFAULT SYSDATE()

エポック形式の現在の日付が必要な場合は、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 |
+-------------------------+-------------------------+------------------+

関連:


1

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

UNIX_TIMESTAMP() 

その後はいつでも人間が読める形式にいつでも変換でき、個人的に最も便利なように国際化できます。

FROM_ UNIXTIME (unix_timestamp, [format ])

1

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

ALTER TABLE servers MODIFY COLUMN network_shares datetime NOT NULL DEFAULT CURRENT_TIMESTAMP;

0

あなたはだけでなく、使用することができますnow()また、current_timestamp()localtimestamp()。誤った表示タイムスタンプの主な理由は、一重引用符で NOW()挿入することです!このIDEがmysql関数に単一引用符を追加したため、MySQLワークベンチでは機能しませんでした。すぐに認識できませんでした)

MySQL Workbenchのように、単一引用符を含む関数を使用しないでください。動かない。


-9
$rs = $db->Insert('register',"'$fn','$ln','$email','$pass','$city','$mo','$fil'","'f_name','l_name=','email','password','city','contact','image'");

あなたはすぐにあなたの答えを説明する必要があります。
Sebastian Zartner、2014年

この答えは実際にはほとんど意味がありません!
Matteo Tassinari 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.