[SQL] SQL 쿼리는 SQL 서버에서 날짜를 삽입
SQLSQL 쿼리는 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.당신은 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.문자열 리터럴에 대한보다 언어에 독립적 인 선택은 국제 표준 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.관리 스튜디오와 같은 스크립트를 작성합니다
관리 스튜디오와 같은 스크립트를 작성합니다
insert table1 (foodate) values(CAST(N'2012-06-18 10:34:09.000' AS DateTime))
-
==============================
4.당신처럼 추가해야
당신처럼 추가해야
insert into table1(date1) values('12-mar-2013');
-
==============================
5.사용 변환 할 필요가 없습니다. 간단하게 ISO 8601 형식의 인용 날짜로 나열합니다. 그래서 같이 :
사용 변환 할 필요가 없습니다. 간단하게 ISO 8601 형식의 인용 날짜로 나열합니다. 그래서 같이 :
select * from table1 where somedate between '2000/01/01' and '2099/12/31'
세퍼레이터가 있어야 / 그것은 단일 'H 표로 될 필요가있다.
-
==============================
6.당신은 어떤 프로그래밍 언어를 통해 값을 저장하는 경우
당신은 어떤 프로그래밍 언어를 통해 값을 저장하는 경우
여기서 C #의 예는
저장 지금까지 당신은 그것을 저장 한 후 먼저 변환해야
insert table1 (foodate) values (FooDate.ToString("MM/dd/yyyy"));
FooDate는 형식으로 날짜를 포함 날짜 변수입니다.
-
==============================
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)))
from https://stackoverflow.com/questions/12957635/sql-query-to-insert-datetime-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 프로그램에 DbContext.SaveChanges ()에서 생성 된 SQL을 기록 할 수 있습니까? [복제] (0) | 2020.04.01 |
---|---|
[SQL] SQL Server의 선두에 제로 패딩으로 숫자 서식 (0) | 2020.04.01 |
[SQL] 필드가 null는 MySQL의에있는 경우 0을 반환 (0) | 2020.04.01 |
[SQL] SELECT / GROUP BY - 시간 세그먼트 (10 초 30 초 등) (0) | 2020.04.01 |
[SQL] 데이터베이스에, 각각의 테이블 및 필드의 목록을 얻기 (0) | 2020.04.01 |