Sql vaicājums, lai SQL Serverī ievietotu datuma laiku

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.

Risinājums

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.

Komentāri (8)

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  @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);
Komentāri (4)

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ā.

Komentāri (0)