Używam MS SQL Server 2008, , aw tabeli mam kolumnę idate jako datę, ale w formacie całkowitym. Ale w zapytaniu chcę to w formacie daty. Czy jest możliwe przekonwertowanie daty całkowitej na właściwy format datetime?Jak przekonwertować int do daty w SQL Server 2008
Odpowiedz
Nie można przekonwertować wartość całkowitą prosto do daty, ale można najpierw do datetime następnie do data typu
select cast(40835 as datetime)
a następnie przekonwertować do daty (SQL 2008)
select cast(cast(40835 as datetime) as date)
okrzyki
po prostu ponownie odczytać swoje pytanie, jeśli chcesz jako datę, a następnie po prostu wybierz opcję Cast (40835 jako datetime) – davey
Najprawdopodobniej chcą zbadać dokumentację dla T-SQL w CAST i CONVERT funkcje, znajdujące się w dokumentacji tutaj: http://msdn.microsoft.com/en-US/library/ms187928(v=SQL.90).aspx
będzie następnie użyć jednego z tych funkcji w zapytaniu T-SQL do konwersji kolumna [idate] z bazy danych do formatu datetime lubienia w wynikach.
Musisz najpierw przekonwertować go do datetime, a następnie do d jadł.
Spróbuj tego, może to być pomocne:
Select Convert(DATETIME, LEFT(20130101, 8))
następnie przekonwertować do tej pory.
Czytanie poprzez to pomaga rozwiązać podobny problem. Dane są podane w dziesiętnym typie danych - [DOB] [dziesiętnie] (8, 0) NIE NULL - np. - 19700109. Chcę uzyskać w danym miesiącu. Rozwiązaniem jest połączenie SUBSTRING z CONVERT z VARCHAR.
SELECT [NUM]
,SUBSTRING(CONVERT(VARCHAR, DOB),5,2) AS mob
FROM [Dbname].[dbo].[Tablename]
Jeśli całkowita jest znacznik czasu w milisekundach użyć:
SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name
To będzie sformatować milisekund rrrr-mm-dd ciąg.
Pytanie dotyczy MS SQL Server, który nie ma żadnej funkcji 'strftime' (która moim zdaniem jest funkcją SQLite?) – jpw
Kiedy mówisz, że masz datę w formacie całkowitym, co dokładnie masz na myśli - jaki jest format? – condiosluzverde
davey ma rację. 'DATEADD (DAY, 40835, '1900-01-01')' jest nieco szybszy w testach, które przeprowadziłem. –