Функция SQL Timstamp - PullRequest
       15

Функция SQL Timstamp

0 голосов
/ 27 мая 2010

Есть ли разница между этими двумя запросами?

select * from tbl where ts < '9999-12-31-24.00.00.000000';

и

select * from tbl where ts < timestamp('9999-12-31-24.00.00.000000');

Когда требуется функция отметки времени? Есть ли разница в производительности?

Ответы [ 3 ]

2 голосов
/ 27 мая 2010

Если тип строки ts:

  • 1-й сравнивается как строки как
  • 2-ой вызовет преобразование ts в дату / время

Если ts - тип даты / времени,

  • 1-й преобразует константу в тот же тип даты и времени, что и столбец ts
  • 2-й сравнивается как для даты / времени

Если ts является строковым типом, 2-й тип является наихудшим для использования, поскольку ts будет преобразован, что сделает недействительными любые индексы.

Если ts - дата / время, то нет никакой разницы

Приоритет типа данных применяется к большинству механизмов БД

1 голос
/ 27 мая 2010

На первый взгляд, первое утверждение выполнит сравнение строк, а второе должно сравнить даты.

0 голосов
/ 27 мая 2010

Это зависит от вашей реализации SQL, хотя, предполагая, что столбец "ts" является неким типом даты / времени, разницы практически нет.

Большинство реализаций SQL имеют отображение преобразования, которое инструктирует движок, как автоматически преобразовывать типы данных, которые соответствуют некоторому шаблону, особенно если буквальное сравнение не имеет смысла. Например, буквальное сравнение метки времени со строкой не имеет особого смысла. Однако большинство механизмов имеют отображение, позволяющее узнать, что строка, отформатированная как дата, может быть автоматически преобразована в метку времени для сравнения с другими метками времени.

...