Oracle中的日期转换(YYYYMMDD格式返回YYYYMMDD)

时间:2018-05-17 07:09:46

标签: oracle plsql

您好我对Oracle很陌生,需要了解如何做到这一点。

考虑到我有一个文本文件,文件中的值是

' 20180924' ' 20180923'

我从Pro * c中读取这些值,然后我添加了29天,所以现在值从20180924变为20180953.我不希望发生这种情况我希望将值添加为< / p>

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use PhpAmqpLib\Message\AMQPMessage;
use PhpAmqpLib\Connection\AMQPStreamConnection; 

class Welcome extends CI_Controller {

    public function index()
    {
        $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
        $channel = $connection->channel();
        $channel->queue_declare('hello', false, false, false, false);

        $msg = new AMQPMessage('Yur message goes here....');
        $channel->basic_publish($msg, '', 'hello');

        $channel->close();
        $connection->close();

        $this->load->view('welcome_message');
    }
}

答案是正确的,但我希望结果也采用与 20181023相同的 YYYYMMDD 格式。

我如何实现这一目标?

3 个答案:

答案 0 :(得分:5)

只需将其格式化即可。

to_char(TO_DATE('20180924','yyyymmdd')+29, 'yyyymmdd')

答案 1 :(得分:3)

日期没有格式 - 它们是represented internally by 7 or 8 bytes

如果您希望日期具有格式,则需要将其转换为可格式化的数据类型 - 即字符串:

TO_CHAR( TO_DATE( '20180924', 'yyyymmdd' ) + 29, 'YYYYMMDD' )

当SQL / Plus(或SQL Developer)显示日期数据类型时,它们会隐式地将它们转换为字符串(因为这对您,用户而言比显示原始字节更有意义)并使用NLS_DATE_FORMAT会话参数作为此隐式转换中的格式模型。如果您想更改此设置,则可以使用:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD';

然后是您的查询:

TO_DATE( '20180924', 'yyyymmdd' ) + 29

应该(如果您的SQL客户端使用此设置并且没有自己的内部格式首选项),请提供您期望的输出。 (注意:这将更改客户端的默认格式,以显示此会话中的所有日期,而不仅仅是这一个语句。)

答案 2 :(得分:-1)

从EMP中选择TO_NUMBER((TO_CHAR(TO_DATE(HIREDATE,'DD-MON-YY'),'YYYYMMDD'));

选择TO_NUMBER((TO_CHAR(TO_DATE(HIREDATE,'DD-MON-YY'),'YYYYMMDD'))从EMP


20201101

从DUAL中选择TO_NUMBER((TO_CHAR(TO_DATE(SYSDATE,'DD-MON-YY'),'YYYYMMDD'));