2011-10-20 14 views
9

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

+0

Kiedy mówisz, że masz datę w formacie całkowitym, co dokładnie masz na myśli - jaki jest format? – condiosluzverde

+0

davey ma rację. 'DATEADD (DAY, 40835, '1900-01-01')' jest nieco szybszy w testach, które przeprowadziłem. –

Odpowiedz

15

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

+1

po prostu ponownie odczytać swoje pytanie, jeśli chcesz jako datę, a następnie po prostu wybierz opcję Cast (40835 jako datetime) – davey

3

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.

0

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] 
0

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.

+0

Pytanie dotyczy MS SQL Server, który nie ma żadnej funkcji 'strftime' (która moim zdaniem jest funkcją SQLite?) – jpw

Powiązane problemy