복붙노트

[SQL] SQL 쿼리는 SQL 서버에서 날짜를 삽입

SQL

SQL 쿼리는 SQL 서버에서 날짜를 삽입

나는 SQL 쿼리 아래를 사용하여 테이블 (SQL 서버)에 날짜 시간 값을 삽입 할

insert into table1(approvaldate)values(18-06-12 10:34:09 AM);

그러나 나는이 오류 메시지가 표시됩니다. '10'근처의 구문이 잘못되었습니다.

나는 따옴표와 함께 그것을 시도

insert into table1(approvaldate)values('18-06-12 10:34:09 AM');

이 오류 메시지는 날짜에 VARCHAR를 변환 할 수 없습니다 수

친절하게 도움을! 감사.

해결법

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

    1.당신은 SQL Server의 명확한 날짜 결정에 대한 YYYYMMDD를 사용하는 것이 좋습니다.

    당신은 SQL Server의 명확한 날짜 결정에 대한 YYYYMMDD를 사용하는 것이 좋습니다.

    insert into table1(approvaldate)values('20120618 10:34:09 AM');
    

    mm : 당신은 DD-MM-YY hh가 결혼하는 경우 SS의 XM 형식으로, 당신은 특정 스타일에 CONVERT를 사용해야합니다.

    insert table1 (approvaldate)
           values (convert(datetime,'18-06-12 10:34:09 PM',5));
    

    5 여기 이탈리아어 날짜의 스타일입니다. 음,뿐만 아니라 이탈리아,하지만 그것은 온라인에서 기인 년대 문화입니다.

  2. ==============================

    2.문자열 리터럴에 대한보다 언어에 독립적 인 선택은 국제 표준 ISO 8601 형식 "SS : mm YYYY-MM ISO 형식"입니다. 나는 형식을 테스트하는 아래의 SQL 쿼리를 사용하고, 그것은 참으로 sys.syslanguages에있는 모든 SQL 언어로 작동합니까 :

    문자열 리터럴에 대한보다 언어에 독립적 인 선택은 국제 표준 ISO 8601 형식 "SS : mm YYYY-MM ISO 형식"입니다. 나는 형식을 테스트하는 아래의 SQL 쿼리를 사용하고, 그것은 참으로 sys.syslanguages에있는 모든 SQL 언어로 작동합니까 :

    declare @sql nvarchar(4000)
    
    declare @LangID smallint
    declare @Alias sysname
    
    declare @MaxLangID smallint
    select @MaxLangID = max(langid) from sys.syslanguages
    
    set @LangID = 0
    
    while @LangID <= @MaxLangID
    begin
    
        select @Alias = alias
        from sys.syslanguages
        where langid = @LangID
    
        if @Alias is not null
        begin
    
            begin try
                set @sql = N'declare @TestLang table (langdate datetime)
        set language ''' + @alias + N''';
        insert into @TestLang (langdate)
        values (''2012-06-18T10:34:09'')'
                print 'Testing ' + @Alias
    
                exec sp_executesql @sql
            end try
            begin catch
                print 'Error in language ' + @Alias
                print ERROR_MESSAGE()
            end catch
        end
    
        select @LangID = min(langid)
        from sys.syslanguages
        where langid > @LangID
    end
    

    Microsoft TechNet의 표준 ANSI 표준 SQL 날짜 형식 ": mm : YYYY-MM-DD hh가 SS"의 문자열 리터럴 날짜 및 시간 형식 섹션에 따르면 "다중 언어"로되어있다. 그러나 동일한 쿼리를 사용하여 ANSI 형식은 모든 SQL 언어에서 작동하지 않습니다.

    예를 들어, 덴마크어, 당신은 많은 오류는 다음과 같은 것입니다 :

    당신은 SQL 서버에서 실행되도록 C #에서 쿼리를 작성하려면, 당신은 ISO 8601 형식으로 날짜를 통과하는 데 필요한 정렬 가능한 "S"형식 지정자를 사용하는 경우 :

    string.Format("select convert(datetime2, '{0:s}'", DateTime.Now);
    
  3. ==============================

    3.관리 스튜디오와 같은 스크립트를 작성합니다

    관리 스튜디오와 같은 스크립트를 작성합니다

    insert table1 (foodate) values(CAST(N'2012-06-18 10:34:09.000' AS DateTime))
    
  4. ==============================

    4.당신처럼 추가해야

    당신처럼 추가해야

    insert into table1(date1) values('12-mar-2013');
    
  5. ==============================

    5.사용 변환 할 필요가 없습니다. 간단하게 ISO 8601 형식의 인용 날짜로 나열합니다. 그래서 같이 :

    사용 변환 할 필요가 없습니다. 간단하게 ISO 8601 형식의 인용 날짜로 나열합니다. 그래서 같이 :

    select * from table1 where somedate between '2000/01/01' and '2099/12/31'
    

    세퍼레이터가 있어야 / 그것은 단일 'H 표로 될 필요가있다.

  6. ==============================

    6.당신은 어떤 프로그래밍 언어를 통해 값을 저장하는 경우

    당신은 어떤 프로그래밍 언어를 통해 값을 저장하는 경우

    여기서 C #의 예는

    저장 지금까지 당신은 그것을 저장 한 후 먼저 변환해야

    insert table1 (foodate)
       values (FooDate.ToString("MM/dd/yyyy"));
    

    FooDate는 형식으로 날짜를 포함 날짜 변수입니다.

  7. ==============================

    7.다른 (그리고 반드시라고도 함) 날짜 형식을 얻고 날짜 컬럼에 삽입 : 나는 더 일반적인 문제로 발생합니다. - (확장 할 수 있습니다 ODBC의 표준, 미국, ANSI 및 영국 \ FRANCH 날짜 스타일 관련) 드디어 스칼라 함수를이되었다이 문을 사용하여 해결했습니다

    다른 (그리고 반드시라고도 함) 날짜 형식을 얻고 날짜 컬럼에 삽입 : 나는 더 일반적인 문제로 발생합니다. - (확장 할 수 있습니다 ODBC의 표준, 미국, ANSI 및 영국 \ FRANCH 날짜 스타일 관련) 드디어 스칼라 함수를이되었다이 문을 사용하여 해결했습니다

    insert into <tableName>(<dateTime column>) values(coalesce 
    (TRY_CONVERT(datetime, <DateString, 121), TRY_CONVERT(datetime, <DateString>, 
    101), TRY_CONVERT(datetime, <DateString>, 102), TRY_CONVERT(datetime, 
    <DateString>, 103))) 
    
  8. from https://stackoverflow.com/questions/12957635/sql-query-to-insert-datetime-in-sql-server by cc-by-sa and MIT license