2015-12-24 31 views
5

Trong Microsoft SQL Server 2012 trở lên, có thể chuyển đổi giá trị ngày giờ thành dấu thời gian Unix trong một câu lệnh chọn không? Nếu vậy, làm thế nào nó có thể được thực hiện?Chuyển đổi ngày giờ thành dấu thời gian Unix

+0

Vui lòng thêm những gì bạn đã cố gắng cho đến nay – Ram

+0

Câu trả lời cho câu hỏi của bạn là có. Câu hỏi thực tế của bạn là gì? –

+0

Tôi đã chỉnh sửa câu hỏi, Michael. –

Trả lời

16

Chuyển đổi một datetime để unix timestamp là dễ dàng, nhưng liên quan đến lỗi dễ bị gõ như sau:

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

đâu @datetime là giá trị datetime bạn muốn chuyển đổi. Ký hiệu {d ‘yyyy-mm-dd’} là một chuỗi thoát ODBC.

Chức năng:

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 

Hãy thử nó ra ngay bây giờ như dưới đây @Ousman:

SELECT UNIX_TIMESTAMP(GETDATE()); 
+0

Cảm ơn, tôi sẽ xem liệu điều này có hiệu quả không. –

+0

Bất kỳ lý do nào không đơn giản hóa: chọn DATEDIFF (SECOND, '1970-01-01', @ctimestamp)? hoặc chọn DATEDIFF (SECOND, CONVERT (DATETIME, '1970-01-01', 121), @ctimestamp) Địa phương hóa ngày? – onupdatecascade

+0

Cảm ơn Khaled và onupdatecascade, cả hai giải pháp đều hoạt động. Tôi đồng ý, một của bạn là đơn giản hơn và không yêu cầu tạo ra một chức năng. –

Các vấn đề liên quan