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

내 질문은 위에 게시 한 구문에서 어떻게 사용 해야하는지에 더 목표를 두었습니다.
Samuel Nicholson

1
그것에 대한 프랑코의 답변을 참조하십시오. 그러나 이것은 매우 기본적이며 단지 함수 호출입니다. 따라서 질문을 게시하기 전에이 문제에 대해 더 많은 연구 노력을 기울여야하며 SQL에 대한 지침을 읽어보십시오.
dirkk

7
아이러니. 답을 찾기 위해 노력할 때 ...이 대답!
Zach Smith

답변:


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

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
INSERT INTO servers (server_name, online_status, exchange, disk_space, network_shares)
VALUES('m1','ONLINE','exchange','disk_space','network_shares', NOW())

2

정답은 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 명령 행 인수를 로 설정 NOW()하는 것과 같은 방식으로 작동 할 수 있습니다 .SYSDATE()True

그 주 NOW()(갖는 CURRENT_TIMESTAMP()별칭) 상이 SYSDATE()A의 미묘한 방식 :

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 Workbench에서 나를 위해 작동하지 않았습니다.)

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

이 답변은 실제로 거의 의미가 없습니다!
Matteo Tassinari
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.