2009-06-30 3 views
3

UNIX_TIMESTAMP() не является стандартным ключевым словом ANSI, а является дополнением к синтаксису MySQL. Однако, поскольку я поддерживаю несколько БД, существует ли стандартный способ ANSI для написания UNIX_TIMESTAMP();Стандарт ANSI UNIX_TIMESTAMP()

Thanks

ответ

2

Насколько я знаю, нет.

Каждая база данных обрабатывает это по-разному.

Например, в Oracle, вы должны вручную сгенерировать метку времени с чем-то вроде:

SELECT (sysdateColumn - to_date('01-JAN-1970','DD-MON-YYYY')) * (86400) AS alias FROM tableName; 

В MSSSQL:

SELECT DATEADD(s, yourDateColumn, '19700101') AS alias FROM tableName 

В PGSQL:

SELECT date_part('epoch', timestampColumn) AS alias FROM tableName 

Редактировать : как AlexKuznetsov pointed out, есть два совершенно разных использование функции MySQL UNIX_TIMESTAMP(). Я предположил, что последний, UNIX_TIMESTAMP(date) (для преобразования исходного формата в эпоху) для вышеуказанного ответа.

+0

MSSQL фактически имеет функцию GETUTCDATE(). – Eric

+0

@ Эрик, из того, что я помню, GETUTCDATE() в MSSQL все еще возвращает тип DATETIME. – jason

+0

@jason: И DATEADD(). В этом случае вам потребуется DATEDIFF, а не DATEADD. – Eric

1

Вы не смогли определить UNIX_TIMESTAMP Если верно следующее: UNIX_TIMESTAMP (дата) возвращает значение аргумента в секундах с «1970-01-01 00:00:00»

затем использовать функцию DATEDIFF

Смежные вопросы