T-SQL에서 DateTime 필드를 어떻게 업데이트합니까?


81

다음 쿼리는 datetime 필드를 업데이트하지 않습니다.

update table
SET EndDate = '2009-05-25'
WHERE Id = 1

또한 대시없이 시도했지만 작동하지 않습니다.


1
날짜는 실제 열 이름입니까?
Gratzy 2010-06-29

1
실제로는 EndDate이지만 Date로 단축했습니다.
Xaisoft 2010-06-29

오류가 발생합니까 아니면 결과가 없습니까?
Gratzy 2010-06-29

EndDate열의 데이터 유형은 무엇입니까 ?
OMG Ponies

1 개 행이 영향을 받았다고 표시되어 있지만 확인했을 때 날짜가 변경되지 않았습니다.
Xaisoft 2010-06-29

답변:



33

일반적으로 작동합니다.

그러나 이것을 시도 할 수 있습니까? 가정용 PC에 SQL이 없습니다. 직접 시도 할 수 없습니다.

UPDATE table
SET EndDate = '2009-05-25 00:00:00.000'
WHERE Id = 1

1
이것은 효과가 있었지만 전에 모두 0없이 시도했지만 작동하지 않았습니다. 왜?
Xaisoft

'2009-05-25 00 : 02 : 01.000'로 시도했지만 작동하지 않았습니다.
Xaisoft

좋아, 진지하게 전혀 모른다. 시간 정보없이 작성했기 때문에 SQL은 기본값 인 00 : 00 : 00.000을 자동으로 첨부해야합니다. 그래서 그것은 작동되어야합니다.
Serkan Hekimoglu 2010-06-29

11

문자열 리터럴은 현재 dateformat 설정에 따라 패싱됩니다 SET DATEFORMAT.을 참조하십시오 . 항상 작동하는 한 가지 형식은 '20090525'형식입니다.

물론 이제 '작동하지 않음'을 정의해야합니다. 기록이 업데이트되지 않습니까? 아마도 Id=1어떤 기록과도 일치하지 않는 것 같습니다 ...

'하나의 레코드가 변경되었습니다'라고 표시된 경우 확인 방법을 보여 주셔야합니다.


변환이 좋은 아이디어가 될 것입니다에 대해 내가 ... 명시 적 인 생각을 한 이유 날짜 형식은
OMG 조랑말

좋은 물건 레무스는 SET DATEFORMAT다른 현지화와 환경을 위해 SQL을 작성할 때 정말 효과적입니다
매트 R

대박! 이것은 저에게 효과가 있었고 변환중인 필드가 이미이 형식을 사용하고 있었기 때문에 몇 단계를 절약했습니다. 즉, 먼저 ISO 또는 다른 형식으로 변환 할 필요가 없습니다.
Roberto

8

DateTime 매개 변수를 사용하는 것이 가장 좋은 방법입니다. 그러나 여전히 DateTime을 문자열로 전달하려는 경우 언어에 구애받지 않는 형식이 사용되는 경우 CAST가 필요하지 않아야합니다.

예 :

다음과 같이 생성 된 테이블이 주어집니다.

create table t1 (id int, EndDate DATETIME)
insert t1 (id, EndDate) values (1, GETDATE())

다음은 항상 작동해야합니다.

update t1 set EndDate = '20100525' where id = 1 -- YYYYMMDD is language agnostic

다음이 작동합니다.

SET LANGUAGE us_english
update t1 set EndDate = '2010-05-25' where id = 1

그러나 다음은 아닙니다.

SET LANGUAGE british
update t1 set EndDate = '2010-05-25' where id = 1  

이는 'YYYY-MM-DD'가 언어에 구애받지 않는 형식이 아니기 때문입니다 (SQL 서버의 관점에서 볼 때).

ISO 'YYYY-MM-DDThh : mm : ss'형식은 언어에 구애받지 않으며 0이 아닌 시간을 전달해야 할 때 유용합니다.

더 많은 정보 : http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes



2

작동합니다. 예약 된 키워드이므로 [Date]를 괄호로 묶었습니다.


2

시간 지정에 관심이없는 경우 ' DD / MM / YYYY ' 형식을 사용할 수도 있지만 실제로 기본값을 사용하지 않아야 하므로 변환 방법과 관련 ISO 형식을 고수 합니다.

예를 들면 다음과 같습니다.

SET startDate = CONVERT(datetime,'2015-03-11T23:59:59.000',126) WHERE custID = 'F24'


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