2011-10-20 20 views
9

Sto usando MS SQL Server 2008, e in una tabella ho l'id di colonna come data ma nel formato intero. Ma nella query lo voglio nel formato data. È possibile convertire la data intera in formato datetime appropriato?Come convertire int in data in SQL Server 2008

+0

Quando dici di avere una data in formato intero, cosa intendi esattamente: qual è il formato? – condiosluzverde

+0

davey è corretto. 'DATEADD (DAY, 40835, '1900-01-01')' è leggermente più veloce nei test che ho eseguito. –

risposta

15

Non è possibile convertire un valore intero direttamente a una data, ma è possibile un primo momento ad un datetime poi ad un tipo di data

select cast(40835 as datetime)

e poi convertire in una data (SQL 2008)

select cast(cast(40835 as datetime) as date)

applausi

+1

basta rileggere la tua domanda, se vuoi come data quindi basta selezionare cast (40835 come datetime) – davey

3

dovete convertire prima in datetime, poi a d mangiò.

Prova questa, potrebbe essere utile:

Select Convert(DATETIME, LEFT(20130101, 8)) 

poi convertire fino ad oggi.

0

Leggere questo aiuta a risolvere un problema simile. I dati sono in formato dati decimali - [DOB] [decimal] (8, 0) NOT NULL - ad es. - 19700109. Voglio arrivare al mese. La soluzione è combinare SUBSTRING con CONVERT in VARCHAR.

SELECT [NUM] 
     ,SUBSTRING(CONVERT(VARCHAR, DOB),5,2) AS mob 
    FROM [Dbname].[dbo].[Tablename] 
0

Se il vostro intero è timestamp in millisecondi uso:

SELECT strftime("%Y-%d-%m", col_name, 'unixepoch') AS col_name 

Sarà formattare millisecondi a stringa aaaa-mm-gg.

+0

La domanda riguarda MS SQL Server che non ha alcuna funzione 'strftime' (che credo sia una funzione SQLite?) – jpw

Problemi correlati