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
risposta
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
basta rileggere la tua domanda, se vuoi come data quindi basta selezionare cast (40835 come datetime) – davey
Molto probabilmente desidera esaminare la documentazione per CAST di T-SQL e CONVERT funzioni, che si trova nella documentazione qui: http://msdn.microsoft.com/en-US/library/ms187928(v=SQL.90).aspx
Sarà quindi utilizzare una di queste funzioni nella query T-SQL per convertire la colonna [idate] dal database nel formato datetime di tuo gradimento nell'output.
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.
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]
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.
La domanda riguarda MS SQL Server che non ha alcuna funzione 'strftime' (che credo sia una funzione SQLite?) – jpw
Quando dici di avere una data in formato intero, cosa intendi esattamente: qual è il formato? – condiosluzverde
davey è corretto. 'DATEADD (DAY, 40835, '1900-01-01')' è leggermente più veloce nei test che ho eseguito. –