다음 쿼리는 datetime 필드를 업데이트하지 않습니다.
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
또한 대시없이 시도했지만 작동하지 않습니다.
다음 쿼리는 datetime 필드를 업데이트하지 않습니다.
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
또한 대시없이 시도했지만 작동하지 않습니다.
EndDate
열의 데이터 유형은 무엇입니까 ?
답변:
때 의심, CAST / CONVERT를 사용하여 데이터 유형 변환에 대한 명시 :
UPDATE TABLE
SET EndDate = CAST('2009-05-25' AS DATETIME)
WHERE Id = 1
일반적으로 작동합니다.
그러나 이것을 시도 할 수 있습니까? 가정용 PC에 SQL이 없습니다. 직접 시도 할 수 없습니다.
UPDATE table
SET EndDate = '2009-05-25 00:00:00.000'
WHERE Id = 1
문자열 리터럴은 현재 dateformat 설정에 따라 패싱됩니다 SET DATEFORMAT
.을 참조하십시오 . 항상 작동하는 한 가지 형식은 '20090525'형식입니다.
물론 이제 '작동하지 않음'을 정의해야합니다. 기록이 업데이트되지 않습니까? 아마도 Id=1
어떤 기록과도 일치하지 않는 것 같습니다 ...
'하나의 레코드가 변경되었습니다'라고 표시된 경우 확인 방법을 보여 주셔야합니다.
SET DATEFORMAT
다른 현지화와 환경을 위해 SQL을 작성할 때 정말 효과적입니다
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
UPDATE TABLE
SET EndDate = CAST('2017-12-31' AS DATE)
WHERE Id = '123'