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
기본 날짜/시간 값을 열에 추가할 때는 항상 시간대에 유의해야 합니다.
예를 들어, 이것datetimevalue는 멤버가 언제 웹사이트에 가입했는지 사용자에게 표시되도록 설계되어 있습니다.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' 카테고리의 다른 글
| SQL Azure 데이터베이스를 로컬 개발 서버에 복사하려면 어떻게 해야 합니까? (0) | 2023.04.06 |
|---|---|
| SELECT * [columnA 제외] FROM 테이블을 사용하여 열을 제외하시겠습니까? (0) | 2023.04.06 |
| 클래스 vsVB 모듈그물 (0) | 2023.04.06 |
| 멀티레벨/네스트된 JSON을 평평하게 하는 방법 (0) | 2023.04.06 |
| AngularJS 데이터 바인딩 유형 (0) | 2023.04.06 |
