sql >> Databasteknik >  >> RDS >> Sqlserver

Konvertera ett numeriskt värde till datum och tid

Ditt datum är faktiskt ett numeriskt värde (float eller heltal), lagrat i en kolumn för tecken. Så du måste konvertera det till ett numeriskt värde (i det här fallet till float ) först, som:

select convert(datetime, CONVERT(float,date_column))

Ett värde på 41547.5 kommer att resultera i:

`2013-10-02 12:00:00`

Stilargumentet, i ditt fall 6 är endast nödvändigt vid konvertering från eller till char-typer. I det här fallet behövs det inte och kommer att ignoreras.

OBS:Flytvärdet är antalet dagar sedan 1900-01-01 .

t.ex. select convert(datetime, CONVERT(float,9.0)) => 1900-01-10 00:00:00; samma som select dateadd(day,9.0,'1900-01-01') skulle.

Den decimala delen av talet är också lika med dagar; alltså 0.5 är en halv dag / 12 timmar.

t.ex. select convert(datetime, CONVERT(float,.5)) => 1900-01-01 12:00:00 . (Här är vår jämförelse med dateadd inte vettig, eftersom det bara handlar om heltal snarare än flytande).



  1. Räkna på varandra följande numeriska värden i SQL

  2. Databasindexering i ett nötskal med B+tree och Hash i jämförelse

  3. NPM Oracle:Infoga BLOB

  4. Behöver exportera fält som innehåller radbrytningar som en CSV från SQL Server