Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Konwersja wartości liczbowej na datę i godzinę

Twoja data jest w rzeczywistości wartością liczbową (zmiennoprzecinkową lub całkowitą), przechowywaną w kolumnie znaków. Musisz więc przekonwertować go na wartość liczbową (w tym przypadku na float ) najpierw, jak:

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

Wartość 41547.5 spowoduje:

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

Argument stylu, w twoim przypadku 6 jest konieczne tylko podczas konwersji z lub na typy znaków. W takim przypadku nie jest to potrzebne i zostanie zignorowane.

Uwaga:wartość zmiennoprzecinkowa to liczba dni od 1900-01-01 .

np. select convert(datetime, CONVERT(float,9.0)) => 1900-01-10 00:00:00; to samo co select dateadd(day,9.0,'1900-01-01') zrobiłby.

Część dziesiętna liczby to również dni; więc 0.5 to pół dnia / 12 godzin.

np. select convert(datetime, CONVERT(float,.5)) => 1900-01-01 12:00:00 . (Tutaj nasze porównanie z dateadd nie ma sensu, ponieważ dotyczy to tylko liczb całkowitych, a nie zmiennoprzecinkowych).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest impas w SQL Server?

  2. Czy mogę drukować od razu dla każdej iteracji w pętli?

  3. Uzyskaj pozycję elementu xml w SQL Server 2012

  4. Procesory AMD EPYC z serii 7002 i serwer SQL

  5. Jak usunąć obiekty obsługi diagramów z SQL Server?