T-SQL에서 DateTime 필드를 어떻게 업데이트합니까?
다음 쿼리는 datetime 필드를 업데이트하지 않습니다.
update table
SET EndDate = '2009-05-25'
WHERE Id = 1
또한 대시없이 시도했지만 작동하지 않습니다.
때 의심, 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
어떤 기록과도 일치하지 않는 것 같습니다 ...
'하나의 레코드가 변경되었습니다'라고 표시된 경우 확인 방법을 보여 주셔야합니다.
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'
작동합니다. 예약 된 키워드이므로 [Date]를 괄호로 묶었습니다.
다시 설정하는 테이블에 트리거가 있습니까?
시간 지정에 관심이없는 경우 ' DD / MM / YYYY ' 형식을 사용할 수도 있지만 실제로 기본값 사용을 피해야 하므로 변환 방법과 관련 ISO 형식을 고수 할 것 입니다.
예를 들면 다음과 같습니다.
SET startDate = CONVERT(datetime,'2015-03-11T23:59:59.000',126) WHERE custID = 'F24'
참고 URL : https://stackoverflow.com/questions/3144074/how-do-you-update-a-datetime-field-in-t-sql
'Nice programing' 카테고리의 다른 글
PostgreSQL에서 제약 이름 업데이트 (0) | 2020.10.20 |
---|---|
Google지도 마커에 ID 추가 (0) | 2020.10.20 |
jQuery 'if .change () 또는 .keyup ()' (0) | 2020.10.20 |
Linux에서 Atom Editor를 업그레이드하는 방법은 무엇입니까? (0) | 2020.10.20 |
Swift : 인덱스에서 문자열 배열 바꾸기 (0) | 2020.10.20 |