SQL Server에서 datetime 필드의 기본값을 타임 스탬프에 추가
웹 사이트에서 제출 한 양식을 수집하는 테이블이 있지만 어떤 이유로 테이블을 만들 때 타임 스탬프를 테이블에 넣지 않았습니다. 레코드가 입력 된 정확한 날짜와 시간을 입력하고 싶습니다.
나는 그것이 어딘가에 있다는 것을 알고 있지만 (Access에서, getNow()
또는 사용하는 것처럼) 기본값을 설정하는 방법을 찾을 수 Now()
없지만 어디에 넣을 지 모르겠습니다.
기존 테이블에서 기존 열을 수정하려면 다음을 수행하십시오.
ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETDATE() FOR YourColumn
이것은 SSMS GUI를 통해서도 가능합니다.
- 테이블을 디자인 뷰에 배치하십시오 (객체 탐색기-> 디자인 에서 테이블을 마우스 오른쪽 버튼으로 클릭하십시오 )
- 테이블에 열을 추가하거나 이미 존재하는 경우 업데이트하려는 열을 클릭하십시오.
- 열 속성에서 아래 그림과 같이 기본값 또는 바인딩 필드에 입력하십시오
(getdate())
.
SQL Server의 해당 테이블에서 해당 열의 기본값을로 지정하십시오 CURRENT_TIMESTAMP
. 해당 열의 데이터 유형은 datetime 또는 datetime2 일 수 있습니다.
예 :
Create Table Student
(
Name varchar(50),
DateOfAddmission datetime default CURRENT_TIMESTAMP
);
그것이 효과가 있기를 바랍니다.
표시된 답변 은 다음과 같이 정확 하지만 :
ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETDATE() FOR YourColumn
기본 날짜 시간 값을 열에 추가 할 때는 항상 시간대를 알고 있어야합니다.
예를 들어,이 datetime
값은 구성원이 웹 사이트에 가입 한 시점을 나타내며 사용자 GETDATE()
에게 다시 표시하려는 경우 서버 시간을 제공하므로 사용자가 서버와 다른 로캘 인 경우 불일치를 표시 할 수 있습니다.
해외 사용자를 처리하려면 GETUTCDATE () 를 사용하는 것이 좋습니다 .
현재 데이터베이스 시스템 타임 스탬프를 날짜 / 시간 값으로 반환합니다. 데이터베이스 시간대 오프셋은 포함되지 않습니다. 이 값은 현재 UTC 시간 (협정 세계시)을 나타냅니다. 이 값은 SQL Server 인스턴스가 실행중인 컴퓨터의 운영 체제에서 파생됩니다.
ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETUTCDATE() FOR YourColumn
값을 검색 할 때 프런트 엔드 응용 프로그램 / 웹 사이트는이 값을 UTC 시간에서 요청한 사용자의 로캘 / 문화로 변환해야합니다.
열에서 널을 허용하지 않고 열의 기본값을 설정하십시오. getdate()
/*Deal with any existing NULLs*/
UPDATE YourTable SET created_date=GETDATE() /*Or some sentinel value
'19000101' maybe?*/
WHERE created_date IS NULL
/*Disallow NULLs*/
ALTER TABLE YourTable ALTER COLUMN created_date DATE NOT NULL
/*Add default constraint*/
ALTER TABLE YourTable ADD CONSTRAINT
DF_YourTable_created_date DEFAULT GETDATE() FOR created_date
새 테이블을 만들 때의 구문은 다음과 같습니다.
CREATE TABLE MyTable
(
MYTableID INT IDENTITY(1,1),
CreateDate DATETIME NOT NULL CONSTRAINT DF_MyTable_CreateDate_GETDATE DEFAULT GETDATE()
)
이것은 나를 위해 작동합니다 ...
ALTER TABLE [accounts]
ADD [user_registered] DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ;
이것은 또한 작동합니다 :
CREATE TABLE Example(
...
created datetime default GETDATE()
);
또는:
ALTER TABLE EXAMPLE ADD created datetime default GETDATE();
이것은 나를 위해 일했습니다. Oracle DB에서 SQL Developer를 사용하고 있습니다.
ALTER TABLE YOUR_TABLE
ADD Date_Created TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
따르기 쉽도록 위의 답변 을 요약 합니다.
테이블이 Customer 라고 가정 하면 4 열 / 그 이상이 있습니다.
삽입이있을 때마다 테이블에 새 열을 추가하려고합니다. 그런 다음 해당 열은 이벤트가 발생한 시간을 기록합니다.
해결책:
데이터 유형이 datetime 인 테이블에 timepurchase 가 새 열 이라고 가정 합니다 .
그런 다음 다음 변경을 실행하십시오.
ALTER TABLE Customer ADD CONSTRAINT DF_Customer DEFAULT GETDATE() FOR timePurchase
등록 시스템에 대한 데이터베이스 테이블을 작성한다고 가정하십시오.
IF OBJECT_ID('dbo.registration_demo', 'U') IS NOT NULL
DROP TABLE dbo.registration_demo;
CREATE TABLE dbo.registration_demo (
id INT IDENTITY PRIMARY KEY,
name NVARCHAR(8)
);
이제 몇 사람이 등록합니다.
INSERT INTO dbo.registration_demo (name) VALUES
('John'),('Jane'),('Jeff');
그런 다음 등록 할 때 타임 스탬프가 필요하다는 것을 알고 있습니다.
이 앱이 지리적으로 지역화 된 지역으로 제한되어 있으면로 로컬 서버 시간을 사용할 수 있습니다 GETDATE()
. 그렇지 않으면 전 세계 잠재 고객에 대한 Tanner의 고려 사항 에 GETUTCDATE()
기본값 을 사용해야 합니다.
이 답변 과 같은 하나의 문장에 기본값으로 열을 추가하십시오 .
ALTER TABLE dbo.registration_demo
ADD time_registered DATETIME DEFAULT GETUTCDATE();
다른 등록자를 확보하고 데이터가 어떻게 보이는지 봅시다.
INSERT INTO dbo.registration_demo (name) VALUES
('Julia');
SELECT * FROM dbo.registration_demo;
id name time_registered 1 John NULL 2 Jane NULL 3 Jeff NULL 4 Julia 2016-06-21 14:32:57.767
SQLPlus에서 테이블을 생성하는 동안
SQL> 테이블 테스트 작성
( Test_ID number not null,
Test_Date date default sysdate not null );
SQL> Test (id) 값에 삽입 (1);
Test_ID Test_Date
1 08-MAR-19
'IT story' 카테고리의 다른 글
Git에서 로컬 커밋을 버리는 방법? (0) | 2020.04.10 |
---|---|
Xcode 6에서 Swift to Objective-C 헤더가 생성되지 않음 (0) | 2020.04.10 |
PowerShell을 사용하여 관리자 권한으로 명령을 실행 하시겠습니까? (0) | 2020.04.10 |
package.json에서 환경 변수를 설정하는 방법 (0) | 2020.04.10 |
PHP : 다시 색인화하는 대신 키를 유지하면서 두 개의 배열을 병합 하시겠습니까? (0) | 2020.04.10 |