SQL Server의 datetime 필드의 기본값을 타임스탬프에 추가합니다.
저희 웹사이트에서 제출받은 양식을 수집하는 표를 가지고 있는데, 어떤 이유에서인지 테이블을 만들 때 테이블에 타임스탬프를 넣지 않았습니다.기록이 입력된 날짜와 시간을 정확히 입력해 주셨으면 합니다.
어딘가에 있는 것은 알지만 기본값을 설정하는 방법을 찾을 수 없는 것 같습니다(Access에서는getNow()
또는Now()
어디에 둬야 할지 모르겠어요.
기존 테이블의 기존 열을 수정하는 경우:
ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETDATE() FOR YourColumn
이것은 SSMS GUI 를 통해서도 실행할 수 있습니다.
- 테이블을 디자인 뷰에 배치합니다(오브젝트 탐색기에서 테이블을 오른쪽 클릭-> 디자인).
- 테이블에 열을 추가합니다(또는 업데이트할 열이 이미 있는 경우 클릭).
- 열 속성에 다음과 같이 입력합니다.
(getdate())
[ Default Value ]필드 또는 [Binding]필드에 표시됩니다.
SQL Server 테이블에서 이 열의 기본값을 로 지정합니다.해당 열의 데이터 유형은 다음과 같습니다.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
value는 멤버가 언제 웹사이트에 가입했는지 사용자에게 표시되도록 설계되어 있습니다.GETDATE()
그러면 서버 시간이 주어지기 때문에 사용자가 서버와 다른 로케일에 있는 경우 불일치가 나타날 수 있습니다.
해외 사용자를 상대할 예정이라면 GETUTCDATE()를 사용하는 것이 좋을 수 있습니다.이 방법은 다음과 같습니다.
현재 데이터베이스 시스템 타임스탬프를 날짜/시간 값으로 반환합니다.데이터베이스 시간대 오프셋은 포함되지 않습니다.이 값은 현재 UTC 시간(표준시)을 나타냅니다.이 값은 SQL 서버 인스턴스가 실행 중인 시스템의 운영 체제에서 파생됩니다.
ALTER TABLE YourTable ADD CONSTRAINT DF_YourTable DEFAULT GETUTCDATE() FOR YourColumn
값을 취득할 때 프런트엔드 애플리케이션/웹사이트는 이 값을 UTC 시각에서 요구하는 사용자의 로케일/문화로 변환해야 합니다.
열에 Null을 허용하지 않고 다음 열에 기본값을 설정합니다.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();
이건 나한테 효과가 있었어.SQL Developer를 Oracle DB와 함께 사용하고 있습니다.
ALTER TABLE YOUR_TABLE
ADD Date_Created TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;
등록 시스템에 대한 데이터베이스 테이블을 만든다고 가정합니다.
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');
그러면 언제 등록했는지에 대한 타임스탬프가 필요하다는 것을 알게 됩니다.
이 앱이 지역별로 한정되어 있는 경우 로컬 서버 시간을 에서 사용할 수 있습니다.그렇지 않으면 Tanner가 디폴트값으로 글로벌 독자를 배려하는 점에 유의해야 합니다.
다음과 같은 하나의 문장에 기본값을 포함하는 열을 추가합니다.
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
알기 쉽게 하기 위해 위의 답변을 정리합니다.
예를 들어 테이블이 Customer라고 합니다.이 테이블은 4열 이상입니다.
테이블에 새 열을 추가하려고 합니다. 테이블에는 매번 삽입이 있을 때마다...그러면 해당 컬럼에 이벤트가 발생한 시간이 기록됩니다.
솔루션:
datetime 형식의 테이블에 새로운 컬럼(time purchase가 새로운 컬럼)을 추가합니다.
그런 다음 다음 변경을 실행합니다.
ALTER TABLE Customer ADD CONSTRAINT DF_Customer DEFAULT GETDATE() FOR timePurchase
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
언급URL : https://stackoverflow.com/questions/4888277/add-default-value-of-datetime-field-in-sql-server-to-a-timestamp
'programing' 카테고리의 다른 글
도커: Alpine 기반 도커 이미지에서 bash를 사용하는 방법 (0) | 2023.04.08 |
---|---|
디렉토리를 tar하지만 완전한 절대 경로를 아카이브에 저장하지 않음 (0) | 2023.04.08 |
bash 문자 뒤에 있는 텍스트를 모두 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.08 |
cron의 Windows 버전은 무엇입니까? (0) | 2023.04.08 |
Json Schema 파일 확장자 (0) | 2023.02.14 |