복붙노트

[SQL] ALL DATETIME ISO 8601

SQL

ALL DATETIME ISO 8601

나는 ISO 8601 날짜 형식을 필요로하는 사양을 부여받은 하나는 변환 코드 또는이 두 사례를 얻기의 방법을 알고 않습니다 :

ISO 8601 Extended Date 2000-01-14T13:42Z 
ISO 8601 Basic Date 20090123T105321Z

해결법

  1. ==============================

    1.SQL 서버에서 날짜를 다룰 때 단지에 관계없이 언어와 문화의 설정의 작동하므로, ISO-8601 형식은 아마 갈 수있는 가장 좋은 방법입니다.

    SQL 서버에서 날짜를 다룰 때 단지에 관계없이 언어와 문화의 설정의 작동하므로, ISO-8601 형식은 아마 갈 수있는 가장 좋은 방법입니다.

    단지 리터럴 문자열로 날짜를 지정 - 기본적으로 SQL Server 테이블에 데이터를 삽입하기 위해, 당신은 전혀 어떤 변환 코드 또는 아무것도 필요하지 않습니다

    INSERT INTO MyTable(DateColumn) VALUES('20090430 12:34:56.790')
    

    하면됩니다.

    당신이 선택에 ISO-8601 형식으로 날짜 열을 변환해야하는 경우, 당신은 ISO 형식을 달성하기 위해 (시간대 정보) 변환 코드 126 또는 127을 사용할 수 있습니다.

    SELECT CONVERT(VARCHAR(33), DateColumn, 126) FROM MyTable
    

    당신에게 제공해야합니다 :

    2009-04-30T12:34:56.790
    
  2. ==============================

    2.이

    SELECT CONVERT(NVARCHAR(30), GETDATE(), 126)
    

    이를 생성합니다

    2009-05-01T14:18:12.430
    

    그리고 이에 대한 좀 더 세부 사항은 MSDN에서 찾을 수 있습니다.

  3. ==============================

    3.그냥 후행 Z를 포함하여 ISO8601 형식으로 출력 할 날짜를 필요로하고 적어도 SQL 서버 2012에있는 경우에, 당신은 FORMAT을 사용할 수 있습니다 :

    그냥 후행 Z를 포함하여 ISO8601 형식으로 출력 할 날짜를 필요로하고 적어도 SQL 서버 2012에있는 경우에, 당신은 FORMAT을 사용할 수 있습니다 :

    SELECT FORMAT(GetUtcDate(),'yyyy-MM-ddTHH:mm:ssZ')
    

    이것은 당신에게 뭔가를 줄 것이다 :

    2016-02-18T21:34:14Z
    

    @Pxtl 성능 영향을 미칠 수있는 코멘트 FORMAT에서 지적 하듯이,이 비용은이 가져 오는 어떤 유연성에 비해 간주합니다.

  4. ==============================

    4.NO, 아이쿠! 당신은 SQL 서버의 날짜를 포맷 저장하는 경우 당신은 상처의 세계를 요구하고 있습니다. 항상 (어떤 DATETIME, DATE, TIME, DATETIME2) 날짜와 시간 및 SQL 서버 "날짜 / 시간"데이터 유형 중 하나를 저장합니다. 프론트 엔드 코드 결의를 표시하는 방법을 보자 당신이에서 파일을 구축 할 준비 테이블을 구축 할 때 단지 형식의 날짜를 저장합니다. 당신이 절대적으로 SQL Server에서 ISO 날짜 / 시간 형식을 표시해야하는 경우에만 표시 시간에 그것을 할. 나는 ... 충분히 강조 할 수 없다 SQL Server의 형식 날짜 / 시간을 저장하지 않습니다.

    NO, 아이쿠! 당신은 SQL 서버의 날짜를 포맷 저장하는 경우 당신은 상처의 세계를 요구하고 있습니다. 항상 (어떤 DATETIME, DATE, TIME, DATETIME2) 날짜와 시간 및 SQL 서버 "날짜 / 시간"데이터 유형 중 하나를 저장합니다. 프론트 엔드 코드 결의를 표시하는 방법을 보자 당신이에서 파일을 구축 할 준비 테이블을 구축 할 때 단지 형식의 날짜를 저장합니다. 당신이 절대적으로 SQL Server에서 ISO 날짜 / 시간 형식을 표시해야하는 경우에만 표시 시간에 그것을 할. 나는 ... 충분히 강조 할 수 없다 SQL Server의 형식 날짜 / 시간을 저장하지 않습니다.

    {편집하다}. 그 이유는 많은 있지만 가장 확실한은 (정렬 인), 미래의 모든 날짜 계산 및 검색 (예를 들어, 특정 달의 모든 행을 검색) 적어도 암시가 필요합니다 심지어 좋은의 ISO 형식으로, 그입니다 (추가 시간 소요)와 저장 형식의 날짜가 현재 필요로하는 형식이 아닌 경우, 당신은 당신이 원하는 형식으로 다음 날짜에 첫 번째 변환이 필요하고 있습니다 변환.

    동일은 프론트 엔드 코드에 대한 진정한 보유하고 있습니다. 당신이 (텍스트 인) 포맷 된 날짜를 저장하는 경우, 그것은 창 또는 응용 프로그램에 의해 하나 정의 로컬 날짜 형식을 표시하기 위해 동일한 선회가 필요합니다.

    나의 추천은 항상 DATETIME 또는 다른 시간 데이터 형식으로 날짜 / 시간을 저장하고 만 표시 시간에 날짜를 포맷하는 것입니다.

  5. ==============================

    5.ISO 날짜로 말할 때 당신은 기술적으로 두 가지 옵션이 있습니다.

    ISO 날짜로 말할 때 당신은 기술적으로 두 가지 옵션이 있습니다.

    일반적으로, 당신은 혼자가 날짜 값에 특별히 필터링 또는 중립적 인 방식으로 날짜를 유지하기 위해 찾고 있다면. MS는 YMD 또는 Y-m-D의 언어 중립 포맷을 사용하도록 권장. 어느 모두 유효한 ISO 형식이다.

    이 때문에, 가장 안전한 베팅은 유지하는 것입니다 / 항상 중립 YMD 형식을 기반으로 필터.

    코드:

    select convert(char(10), getdate(), 126) -- ISO YYYY-MM-DD
    select convert(char(8), getdate(), 112) -- ISO YYYYMMDD (safest)
    
  6. from https://stackoverflow.com/questions/813238/tsql-datetime-iso-8601 by cc-by-sa and MIT license