2015-12-24 24 views
5

In Microsoft SQL Server 2012 o versione successiva, è possibile convertire un valore datetime in formato Unix in una singola istruzione select? Se è così, come può essere fatto?Converti Datetime in Unix timestamp

+0

Si prega di aggiungere quello che hai provato finora – Ram

+0

La risposta alla sua domanda è sì. Qual è la tua domanda attuale? –

+0

Ho modificato la domanda, Michael. –

risposta

16

Conversione di un datetime per unix timestamp è facile, ma coinvolge soggetto a errori digitando il seguente:

@timestamp=DATEDIFF(second,{d '1970-01-01'},@datetime) 

Dove @datetime è il valore datetime che si desidera convertire. La notazione {d 'aaaa-mm-gg} è una sequenza di escape ODBC.

La funzione:

CREATE FUNCTION UNIX_TIMESTAMP (
@ctimestamp datetime 
) 
RETURNS integer 
AS 
BEGIN 
    /* Function body */ 
    declare @return integer 

    SELECT @return = DATEDIFF(SECOND,{d '1970-01-01'}, @ctimestamp) 

    return @return 
END 

Prova subito come qui di seguito @Ousman:

SELECT UNIX_TIMESTAMP(GETDATE()); 
+0

Grazie, vedrò se funziona. –

+0

Qualsiasi motivo per non semplificare: selezionare DATEDIFF (SECONDO, '1970-01-01', @ctimestamp)? o selezionare DATEDIFF (SECONDO, CONVERT (DATETIME, '1970-01-01', 121), @ctimestamp) Localizzazione data? – onupdatecascade

+0

Grazie a Khaled e onupdatecascade, entrambe le soluzioni funzionano. Sono d'accordo, il tuo è più semplice e non richiede la creazione di una funzione. –