Es gribu ievietot datumpunkta
vērtību tabulā (SQL Server), izmantojot zemāk minēto sql vaicājumu
insert into table1(approvaldate)values(18-06-12 10:34:09 AM);
Bet es saņemu šādu kļūdas ziņojumu. Nepareiza sintakse pie '10'.
Es mēģināju ar pēdiņām
insert into table1(approvaldate)values('18-06-12 10:34:09 AM');
Es saņemu šo kļūdas ziņojumu Cannot convert varchar to datetime
.
Laipni lūdzam palīdzēt! Paldies.
Lai SQL Serverī varētu viennozīmīgi noteikt datumu, ir jāizmanto YYYYYMMDD.
insert into table1(approvaldate)values('20120618 10:34:09 AM');
Ja esat ieviesis dd-mm-yy hh:mm:ss xm
formātu, jums būs jāizmanto CONVERT ar īpašu stilu.
insert table1 (approvaldate)
values (convert(datetime,'18-06-12 10:34:09 PM',5));
`5
šeit ir stils itāļu datumiem. Nu, ne tikai itāļi, bet tieši šai kultūrai tas tiek piedēvēts Books Online.
No valodas neatkarīgāka izvēle virknes literāliem ir starptautiskā standarta ISO 8601 formāts "YYYYY-MM-DDThh:mm:ss". Lai pārbaudītu šo formātu, es izmantoju zemāk redzamo SQL vaicājumu, un tas patiešām darbojas visās SQL valodās, kas atrodas sys.syslanguages:
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
Saskaņā ar Microsoft TechNet sadaļu Virknes burtiskie datuma un laika formāti, ANSI standarta SQL datuma formāts "YYYYY-MM-DD hh:mm:ss" ir paredzēts kā "daudzvalodu". Tomēr, izmantojot vienu un to pašu vaicājumu, ANSI formāts nedarbojas visās SQL valodās.
Piemēram, dāņu valodā būs daudz šādu kļūdu:
Kļūda dāņu valodā Konvertējot varchar datu tipu uz datetime datu tipu, tika iegūta vērtība ārpus diapazona.
Ja vēlaties izveidot vaicājumu C# valodā, lai to palaistu SQL Server, un jums ir jāievada datums ISO 8601 formātā, izmantojiet Sortable "s" formāta specifikatoru:
string.Format("select convert(datetime2, '{0:s}'", DateTime.Now);
Ja vērtības tiek saglabātas, izmantojot jebkuru programmēšanas valodu.
Šeit ir piemērs C# valodā
Lai saglabātu datumu, vispirms tas ir jākonvertē un pēc tam jāglabā.
insert table1 (foodate)
values (FooDate.ToString("MM/dd/yyyy"));
FooDate ir datetime mainīgais, kas satur datumu jūsu formātā.