Последнее время даты в SQL - PullRequest
       3

Последнее время даты в SQL

0 голосов
/ 14 сентября 2011

В таблице есть столбец (REC_CREATE_TIMESTAMP), который показывает дату в формате YY-MM-DD. Я хотел бы выбрать самую последнюю (по времени) определенную дату (скажем, 31 августа 2011 года). Первый столбец должен быть меткой времени в формате hh24: mm: ss, а остальные должны быть всеми столбцами (*) этой таблицы. Как мне это сделать?

Использование Oracle 2.1.1.64

REC_CREATE_TIMESTAMP - НЕ ПУСТО - ДАТА

Ответы [ 3 ]

1 голос
/ 14 сентября 2011
SELECT * FROM Table WHERE REC_CREATE_TIMESTAMP IN
(  
    SELECT
       MAX(REC_CREATE_TIMESTAMP) as REC_CREATE_TIMESTAMP
    FROM
       Table
    WHERE
       TO_CHAR(REC_CREATE_TIMESTAMP, 'YYYYMMDD') = '20110831'
)

ИЗМЕНЕНО для Oracle

0 голосов
/ 14 сентября 2011
SELECT *
FROM tableName As tbl1
WHERE EXISTS
(
  SELECT NULL
  FROM tableName as tbl2
  WHERE
    tbl2.rec_create_timestamp > '2001-08-30'
    tbl2.rec_create_timestamp < '2001-09-01'
  HAVING MAX(tbl2.rec_create_timestamp) = tbl1.rec_create_timestamp
)
0 голосов
/ 14 сентября 2011

Для обобщенного ответа, который может работать с наборами данных, а не с отдельными датами ...

WITH
  sequenced_data AS
(
  SELECT
    ROW_NUMBER() OVER (PARTITION BY TRUNC(rec_create_timestamp) ORDER BY rec_create_timestamp DESC) AS daily_sequence_id,
    TRUNC(rec_create_timestamp) as rec_create_date,
    *
  FROM
    yourData
)
SELECT
  *
FROM
  sequenced_data
WHERE
  daily_sequence_id = 1
  AND rec_create_date = '20110831'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...