2015-12-24 42 views
5

W programie Microsoft SQL Server 2012 lub nowszym, czy możliwa jest konwersja wartości datetime na datownik Unix w pojedynczej instrukcji select? Jeśli tak, jak można to zrobić?Konwertuj datetime na uniksowy znacznik czasu

+0

Należy dodać co próbowali dotychczas – Ram

+0

Odpowiedź na to pytanie jest twierdząca. Jakie jest twoje prawdziwe pytanie? –

+0

Zmieniłem to pytanie, Michael. –

Odpowiedz

16

Konwersja datetime do uniksowego znacznika czasu jest łatwe, ale wiąże się błąd podatne wpisując:

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

Gdzie @datetime jest wartość datetime chcesz przekonwertować. Notacja {d "rrrr-mm-dd '} jest sekwencją escape ODBC.

Funkcja:

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 

Wypróbuj teraz jak poniżej @Ousman:

SELECT UNIX_TIMESTAMP(GETDATE()); 
+0

Dzięki, zobaczę, czy to działa. –

+0

Każdy powód, aby nie upraszczać: wybrać DATEDIFF (SECOND, "1970-01-01", @ctimestamp)? lub wybierz DATEDIFF (SECOND, CONVERT (DATETIME, '1970-01-01', 121), @ctimestamp) Lokalizacja daty? – onupdatecascade

+0

Dzięki Khaled i onupdatecascade oba rozwiązania działają. Zgadzam się, twoja jest prostsza i nie wymaga tworzenia funkcji. –