Как я могу преобразовать метку времени в форматированную ISO дату в db2? - PullRequest
3 голосов
/ 28 октября 2010

Например, если у меня есть поле в базе данных, которое имеет значение: 2010-10-20-12.00.00.000000

Как я могу получить число, содержащее 20101020.

Так что я могусделать что-то вроде этого:

SELECT * FROM file WHERE DATE(timestamp) BETWEEN 20101020 AND 20101031

Это, похоже, не работает.DATE() не возвращает его в формате ISO.

1 Ответ

4 голосов
/ 28 октября 2010

Я всегда думал, что дата в формате ISO была yyyy-mm-dd. Это тот, который мы получаем из DB2 с выражением:

char (date_column,iso)

Но я не думаю, что это необходимо для вашего случая, вы должны быть в состоянии сделать это с помощью:

SELECT * FROM file where date(timestamp) between 20101020 and 20101031

в

select *
    from file
    where timestamp >= '2010-10-20-00:00:00.000000'
      and timestamp <= '2010-10-31-00:00:00.000000'

Вероятно, это будет выполняться быстрее, поскольку вы не выполняете вычисления для каждой строки в базе данных (снижение производительности, если СУБД недостаточно умна, чтобы преобразовать ваш запрос).

Другими словами, единственное вычисление выполняется до выполнения запроса, когда эти текстовые поля превращаются в метки времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...