programing

T-SQL에서 Date Time 필드를 업데이트하려면 어떻게 해야 합니까?

showcode 2023. 4. 10. 22:28
반응형

T-SQL에서 Date Time 필드를 업데이트하려면 어떻게 해야 합니까?

다음 쿼리는 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

문자열 리터럴은 현재 날짜 형식 설정에 따라 페이징됩니다( 참조).항상 작동하는 형식 중 하나는 '20090525'입니다.

물론 'does not work'를 정의해야 합니다.레코드가 업데이트되지 않았습니까?아마도Id=1어떤 기록과도 일치하지 않아

만약 'One record changed'라고 적혀있다면 어떻게 확인하는지 보여주셔야 할 것 같습니다...

Date Time 파라미터를 사용하는 것이 가장 좋습니다.단, 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  

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

ISO 'YYY-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'

시간 지정에 관심이 없는 경우 'DD/MM/YYY' 형식을 사용할 수도 있지만 변환 방법 및 관련 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

반응형