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
Odpowiedz
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());
Dzięki, zobaczę, czy to działa. –
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
Dzięki Khaled i onupdatecascade oba rozwiązania działają. Zgadzam się, twoja jest prostsza i nie wymaga tworzenia funkcji. –
Należy dodać co próbowali dotychczas – Ram
Odpowiedź na to pytanie jest twierdząca. Jakie jest twoje prawdziwe pytanie? –
Zmieniłem to pytanie, Michael. –