[SQL] 날짜 데이터 형식에 대한 기본 값으로 () NOW 설정?
SQL날짜 데이터 형식에 대한 기본 값으로 () NOW 설정?
나는 날짜 데이터 형식으로 구성 테이블 사용자, 즉 registerDate 및 lastVisitDate에서 두 개의 열이 있습니다. 나는 다음을 수행하고 싶습니다.
테이블이 이미 존재하는 기존 기록을 가지고 있기 때문에, 나는 수정 테이블을 사용하고 싶습니다. 나는 아래의 코드의 두 조각을 사용하여 시도했지만, 둘은 작동하지 않습니다.
ALTER TABLE users MODIFY registerDate datetime DEFAULT NOW()
ALTER TABLE users MODIFY registerDate datetime DEFAULT CURRENT_TIMESTAMP;
'registerDate'에 대한 잘못된 기본값 : ERROR 1067 (42000) : 그것은 나에게 오류를 제공합니다
그것은 나를 MySQL의에서 () NOW에 기본 날짜 시간 값을 설정할 수 있습니까?
해결법
-
==============================
1.MySQL은 5.6.5로, 당신은 동적 기본 값으로 DATETIME 유형을 사용할 수 있습니다 :
MySQL은 5.6.5로, 당신은 동적 기본 값으로 DATETIME 유형을 사용할 수 있습니다 :
CREATE TABLE foo ( creation_time DATETIME DEFAULT CURRENT_TIMESTAMP, modification_time DATETIME ON UPDATE CURRENT_TIMESTAMP )
심지어 두 규칙을 결합 :
modification_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
참고: http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-available.html
5.6.5 이전에, 당신은 레코드가 수정 될 때마다 자동으로 업데이트하는 TIMESTAMP 데이터 유형을 사용해야합니다. 그러나 불행하게도, 단 하나의 자동 업데이트 TIMESTAMP 필드는 테이블 당 존재할 수 있습니다.
CREATE TABLE mytable ( mydate TIMESTAMP )
참조 : http://dev.mysql.com/doc/refman/5.1/en/create-table.html
당신은 (INSERT에 만 트리거가 그래서) 당신이 정의를 변경할 수 있습니다 UPDATE에 타임 스탬프 값을 업데이트에서 MySQL을 방지하려면 :
CREATE TABLE mytable ( mydate TIMESTAMP DEFAULT CURRENT_TIMESTAMP )
-
==============================
2.나는 새로운 인서트 NOW ()로 날짜 시간 필드를 설정하는 해결 방법으로 트리거를 사용합니다 :
나는 새로운 인서트 NOW ()로 날짜 시간 필드를 설정하는 해결 방법으로 트리거를 사용합니다 :
CREATE TRIGGER `triggername` BEFORE INSERT ON `tablename` FOR EACH ROW SET NEW.datetimefield = NOW()
너무 업데이트가 작동합니다
요한 & 레오나르도 의한 답변은 타임 스탬프 필드로 변환하는 것을 포함한다. 이것은 아마도 (RegisterDate 및 LastVisitDate 저장) 문제에서 제시 한 사용 사례에 대한 확인하지만, 그것은 보편적 인 해결책이 아니다. 타임 스탬프 질문 대 날짜를 참조하십시오.
-
==============================
3.내 솔루션
내 솔루션
ALTER TABLE `table_name` MODIFY COLUMN `column_name` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
-
==============================
4.당신은 / 펠트를 어떻게 생각하는지 MySQL은 기본 DATETIME 값을 설정하려고 마음을 잃은 모든 사람들을 위해, 나는 정확히 알고있다. 그래서 여기있다 :
당신은 / 펠트를 어떻게 생각하는지 MySQL은 기본 DATETIME 값을 설정하려고 마음을 잃은 모든 사람들을 위해, 나는 정확히 알고있다. 그래서 여기있다 :
`ALTER TABLE `table_name` CHANGE `column_name` DATETIME NOT NULL DEFAULT 0
조심스럽게 I는 0 주위에 작은 따옴표 / 큰 따옴표를 추가하지 않은 것을 관찰한다.
중요 업데이트 :
이 답변은 오랫동안 등을 게시했습니다. 그때, 그것은 MySQL의 내 (아마도 최신) 설치에 근무하고 나는 그것을 공유하는 것 같은 느낌이 들었다. 지금이 솔루션을 사용하기로 결정하기 전에 아래 설명을 읽어 보시기 바랍니다.
-
==============================
5.MySQL은 5.6 문서는 CURRENT_TIMESTAMP 모두 TIMESTAMP 및 DATETIME 데이터 유형에 대한 기본값으로 사용할 수 있다는 말 :
MySQL은 5.6 문서는 CURRENT_TIMESTAMP 모두 TIMESTAMP 및 DATETIME 데이터 유형에 대한 기본값으로 사용할 수 있다는 말 :
http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
-
==============================
6.버전 5.6.5 및 최신을 MySQL을, 당신은 정확한 날짜 시간 및 기본값 설정 값뿐만 아니라 사용할 수 있습니다. 날짜 시간과 NOW () 함수 호출 모두 정밀도 값을 전달하는 미묘한 비트 비록이있다.
버전 5.6.5 및 최신을 MySQL을, 당신은 정확한 날짜 시간 및 기본값 설정 값뿐만 아니라 사용할 수 있습니다. 날짜 시간과 NOW () 함수 호출 모두 정밀도 값을 전달하는 미묘한 비트 비록이있다.
이 예 작품 :
ALTER TABLE my_table MODIFY created datetime(6) NOT NULL DEFAULT NOW(6);
이 예 작동하지 않음 :
ALTER TABLE my_table MODIFY created datetime(6) NOT NULL DEFAULT NOW();
-
==============================
7.
`ALTER TABLE `table_name` CHANGE `column_name` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
업데이트에 대한 타임 스탬프를 업데이트하는 데 사용할 수 있습니다.
-
==============================
8.가장 좋은 방법은 "DEFAULT 0"을 사용하고 있습니다. 다른 방법 :
가장 좋은 방법은 "DEFAULT 0"을 사용하고 있습니다. 다른 방법 :
/************ ROLE ************/ drop table if exists `role`; create table `role` ( `id_role` bigint(20) unsigned not null auto_increment, `date_created` datetime, `date_deleted` datetime, `name` varchar(35) not null, `description` text, primary key (`id_role`) ) comment=''; drop trigger if exists `role_date_created`; create trigger `role_date_created` before insert on `role` for each row set new.`date_created` = now();
-
==============================
9.이것은 MySQL을 사용, 나를 위해 일한 :
이것은 MySQL을 사용, 나를 위해 일한 :
ALTER TABLE `table_name` MODIFY `column_name` datetime NOT NULL DEFAULT NOW();
-
==============================
10.
ALTER TABLE table_name CHANGE COLUMN date_column_name date_column_name DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
마지막으로, 이것은 나를 위해 일한!
-
==============================
11.
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dateCreated` datetime DEFAULT CURRENT_TIMESTAMP, `dateUpdated` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `mobile_UNIQUE` (`mobile`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-
==============================
12.이 간다 여기에 여전히 활성화되어 있지만 확실하지.
이 간다 여기에 여전히 활성화되어 있지만 확실하지.
지금에 기본값을 설정에 관해서는 (), 나는이 DATETIME 데이터 유형에 대한 가능한 것으로 표시되지 않습니다. 해당 데이터 형식을 사용하려면이 같은 삽입을 수행 할 때, 날짜를 설정 :
INSERT INTO Yourtable (Field1, YourDateField) VALUES('val1', (select now()))
MySQL의 내 버전은 5.5입니다
-
==============================
13.이것은 나를 위해 일한 - 내 테이블에 대해 UPDATE에 INSERT를 변경했습니다.
이것은 나를 위해 일한 - 내 테이블에 대해 UPDATE에 INSERT를 변경했습니다.
INSERT INTO Yourtable (Field1, YourDateField) VALUES('val1', (select now()))
from https://stackoverflow.com/questions/5818423/set-now-as-default-value-for-datetime-datatype by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 왼쪽 외부 오라클 11g에서 + 기호를 사용하여 가입 (0) | 2020.04.03 |
---|---|
[SQL] 어떻게 변수를 선언하고 동일한 오라클 SQL 스크립트에서 사용하는 방법? (0) | 2020.04.03 |
[SQL] 다른 열 하나의 그룹에 하나의 열의 다수 연결할 결과 행 [중복] (0) | 2020.04.03 |
[SQL] 데이터베이스 테이블의 컬럼의 목록을 저장하는 방법 (0) | 2020.04.03 |
[SQL] AUTO_INCREMENT이 될 수있는 MySQL의 컬럼을 변경합니다 (0) | 2020.04.03 |