您好我对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 格式。
我如何实现这一目标?
答案 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'));