SQL Server에 날짜 시간을 삽입하는 SQL 쿼리
datetime
아래의 SQL 쿼리를 사용하여 테이블 (SQL Server)에 값 을 삽입하고 싶습니다
insert into table1(approvaldate)values(18-06-12 10:34:09 AM);
그러나이 오류 메시지가 나타납니다. Incorrect syntax near '10'.
나는 따옴표와 함께 그것을 시도
insert into table1(approvaldate)values('18-06-12 10:34:09 AM');
이 오류 메시지가 나타납니다 Cannot convert varchar to datetime
친절하게 도와주세요! 감사.
SQL Server에서 명확한 날짜 결정을 위해 YYYYMMDD를 사용하려고합니다.
insert into table1(approvaldate)values('20120618 10:34:09 AM');
dd-mm-yy hh:mm:ss xm
형식 과 결혼 한 경우 특정 스타일과 함께 CONVERT를 사용해야합니다.
insert table1 (approvaldate)
values (convert(datetime,'18-06-12 10:34:09 PM',5));
5
여기 이탈리아 날짜 스타일이 있습니다. 글쎄, 이탈리아 인뿐만 아니라 그것이 Books Online 의 문화이기 때문 입니다.
문자열 리터럴에 대한 언어 독립적 선택은 국제 표준 ISO 8601 형식 "YYYY-MM-DDThh : mm : ss"입니다. 아래 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 날짜 형식 "YYYY-MM-DD hh : mm : ss"는 "다국어"로되어 있습니다. 그러나 동일한 쿼리를 사용하면 ANSI 형식이 모든 SQL 언어에서 작동하지 않습니다.
예를 들어 덴마크어에서는 다음과 같은 많은 오류가 발생합니다.
언어 덴마크어 오류 varchar 데이터 형식을 datetime 데이터 형식으로 변환하면 범위를 벗어난 값이 발생했습니다.
If you want to build a query in C# to run on SQL Server, and you need to pass a date in the ISO 8601 format, use the Sortable "s" format specifier:
string.Format("select convert(datetime2, '{0:s}'", DateTime.Now);
Management studio creates scripts like:
insert table1 (foodate) values(CAST(N'2012-06-18 10:34:09.000' AS DateTime))
you need to add it like
insert into table1(date1) values('12-mar-2013');
No need to use convert. Simply list it as a quoted date in ISO 8601 format.
Like so:
select * from table1 where somedate between '2000/01/01' and '2099/12/31'
The separator needs to be a /
and it needs to be surrounded by single '
quotes.
If you are storing values via any programming language
Here is an example in C#
To store date you have to convert it first and then store it
insert table1 (foodate)
values (FooDate.ToString("MM/dd/yyyy"));
FooDate is datetime variable which contains your date in your format.
I encounter into a more generic problem: getting different (and not necessarily known) datetime formats and insert them into datetime column. I've solved it using this statement, which was finally became a scalar function (relevant for ODBC canonical, american, ANSI and british\franch date style - can be expanded):
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)))
참고URL : https://stackoverflow.com/questions/12957635/sql-query-to-insert-datetime-in-sql-server
'IT story' 카테고리의 다른 글
href 속성없이 (앵커 태그) (0) | 2020.07.14 |
---|---|
핸들 바를 통한 변수 전달 (0) | 2020.07.14 |
reduce ()를 사용하는 유용한 코드? (0) | 2020.07.14 |
Excel 날짜를 문자열로 변환 (0) | 2020.07.14 |
자바 스크립트 객체 : 상위 항목 가져 오기 (0) | 2020.07.14 |