SQL中日期的最新时间

时间:2011-09-14 18:14:17

标签: sql oracle

表格中有一列(REC_CREATE_TIMESTAMP),以YY-MM-DD格式显示日期。我想选择某个日期的最新(按时间)(比如2011年8月31日)。第一列应该是hh24:mm:ss中的时间戳,其余列应该是该表的所有列(*)。我该怎么做?

使用Oracle 2.1.1.64

REC_CREATE_TIMESTAMP - 非空 - 日期

3 个答案:

答案 0 :(得分:1)

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编辑

答案 1 :(得分:0)

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
)

答案 2 :(得分:-1)

对于可以使用数据集而不是单个日期的通用答案...

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'