DateTime 데이터베이스 필드를 "Now"로 설정합니다.


93

VB.net 코드에서 SQL 매개 변수로 요청을 생성합니다. DateTime 매개 변수를 DateTime 값으로 설정했습니다. 이제 요청이 어떻게 생겼습니까?

UPDATE table SET date = "2010/12/20 10:25:00";

또는

UPDATE table SET date = GETDATE();

첫 번째 경우에는 모든 레코드가 정확히 같은 시간으로 설정 될 것이라고 확신합니다. 두 번째 경우에는 DBMS가 요청을 처리하는 방법에 따라 다릅니다. 두 번째 질문으로 연결됩니다. NOW ()로 큰 테이블을 업데이트 할 때 SQL Server가 동일한 날짜와 시간을 설정합니까?

편집 : NOW () (SQL Server에 존재하지 않음)를 GETDATE ()로 대체했습니다.

답변:


172

SQL에서는 다음을 사용해야합니다 GETDATE().

UPDATE table SET date = GETDATE();

NOW()기능 이 없습니다 .


질문에 답하려면 :

큰 테이블에서는 함수가 각 행에 대해 평가되므로 업데이트 된 필드에 대해 다른 값을 얻게됩니다.

따라서 귀하의 요구 사항이 모두 동일한 날짜로 설정하는 것이라면 다음과 같이 할 것입니다 (예상되지 않음).

DECLARE @currDate DATETIME;
SET @currDate = GETDATE();

UPDATE table SET date = @currDate;

죄송합니다. NOW ()는 Mysql입니다. 죄송합니다. 그러나 질문은 남아 있습니다.
Thibault Witzig

알았어 고마워. 그래서 나는 내 요청에 실제 날짜 (코드에서)를 넣어야합니다. GETDATE () SQL 매개 변수를 DateTime으로 설정하는 것을 알고 있습니까? 이제이 작업을 수행하거나 먼저 날짜를 문자열로 변환 한 다음 요청에 추가 하시겠습니까?
Thibault Witzig

@@ Thibault Witzig-할 수 있습니다. 또는 내가 게시 한 SQL을 사용할 수 있습니다 (현재 날짜를 변수로 가져오고 변수를 사용하여 테이블의 날짜를 설정합니다-변수의 값은 변경되지 않음).
Oded dec

모든 레코드에 대해 동일한 시간을 유지하려면 매개 변수화 된 SQL을 사용하여 Now를 매개 변수로 전달하십시오. 이렇게하면 문자열 구문 분석이나 지역화 된 데이터 문자열 형식 문제에 대해 걱정할 필요가 없습니다.
Jim Wooley

20

GETDATE ()의 대안은 CURRENT_TIMESTAMP입니다. 똑같은 일을합니다.


7
CURRENT_TIMESTAMP실제 SQL 표준이므로 일부는 이것이 선호되는 구문이라고 주장 할 수 있습니다.
Tony L.

이것은 아주 잘못된 것입니다. 나는 그 둘에 대한 문서를 방금 읽었고 그것들이 "정확히 같은 것"이 아니라는 것이 분명해 보인다. 이 질문은 이에 대한 더 자세한 설명을 제공합니다 : stackoverflow.com/questions/7105093/…
Mladen B.

7

사용 GETDATE ()

현재 데이터베이스 시스템 타임 스탬프를 데이터베이스 시간대 오프셋없이 datetime 값으로 반환합니다. 이 값은 SQL Server 인스턴스가 실행중인 컴퓨터의 운영 체제에서 파생됩니다.

UPDATE table SET date = GETDATE()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.