仅从oracle sql中的给定时间戳提取日期

时间:2013-05-14 05:17:07

标签: sql oracle10g database-administration

以下查询:

select cdate from rprt where cdate <= TO_CHAR(sysdate, 'YYYY/MM/DD-HH24-MI-SS-SSSSS') and ryg='R' and cnum='C002';

返回:2013/04/27-10:06:26:794存储在表格中。

我希望仅将日期设为:27-04-2013并获取结果日期和系统日期之间的天数。

7 个答案:

答案 0 :(得分:20)

使用函数cast()从时间戳转换为日期

select to_char(cast(sysdate as date),'DD-MM-YYYY') from dual;

有关函数cast oracle11g http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions016.htm#SQLRF51256

的更多信息

答案 1 :(得分:9)

这正是TO_DATE()的用途:将时间戳转换为日期。

只需使用TO_DATE(sysdate)代替TO_CHAR(sysdate, 'YYYY/MM/DD-HH24-MI-SS-SSSSS')

SQLFiddle demo

<强>更新

根据您的更新,您的cdate列不是真正的DATETIMESTAMP类型,而是VARCHAR2。使用字符串类型来保存日期并不是一个好主意。在日期上搜索,比较和做所有其他类型的数学非常不方便且

您应该将cdate VARCHAR2字段转换为真实TIMESTAMP。假设除了您的代码之外,此字段没有其他用户,您可以将cdate转换为时间戳,如下所示:

BEGIN TRANSACTION;
-- add new temp field tdate:
ALTER TABLE mytable ADD tdate TIMESTAMP;
-- save cdate to tdate while converting it:
UPDATE mytable SET tdate = to_date(cdate, 'YYYY-MM-DD HH24:MI:SS');

-- you may want to check contents of tdate before next step!!!

-- drop old field
ALTER TABLE mytable DROP COLUMN cdate;
-- rename tdate to cdate:
ALTER TABLE mytable RENAME COLUMN tdate TO cdate;
COMMIT;

SQLFiddle Demo

答案 2 :(得分:1)

尝试这种格式:

SELECT to_char(sysdate,'dd-mm-rrrr') FROM dual

答案 3 :(得分:1)

将时间戳转换为日期,如下所述,它肯定会起作用 -

select TO_DATE(TO_CHAR(TO_TIMESTAMP ('2015-04-15 18:00:22.000', 'YYYY-MM-DD HH24:MI:SS.FF'),'MM/DD/YYYY HH24:MI:SS'),'MM/DD/YYYY HH24:MI:SS') dt from dual

答案 4 :(得分:0)

对于我提到的日期格式,即MM/DD/YYYY

,此格式适用于我
SELECT to_char(query_date,'MM/DD/YYYY') as query_date 
FROM QMS_INVOICE_TABLE;

答案 5 :(得分:0)

如果您希望timestamp列中的值作为日期数据类型返回,请使用以下内容:

for(int i = heap->currentSize - 1; i >= 0; --i){
    swap(heap->heapArray[0], heap->heapArray[i];
    heap->currentSize = heap->currentSize - 1;

    heapify(heap, i);
}

答案 6 :(得分:0)

在Oracle 11g中, 要从时间戳获取完整日期,请使用此-

Select TRUNC(timestamp) FROM TABLE_NAME;

要从时间戳获取年份,请使用此-

Select EXTRACT(YEAR FROM TRUNC(timestamp)) from TABLE_NAME;

要从时间戳记中获取月份,请使用此-

Select EXTRACT(MONTH FROM TRUNC(timestamp)) from TABLE_NAME;

要从时间戳记中获取日期,请使用此-

Select EXTRACT(DAY FROM TRUNC(timestamp)) from TABLE_NAME;