记录支付哪些事pay ali pay tenggx
Sep 3
Execution Plans for Resource-Intensive Queries Product join
Resource-intensive queries can have a bad execution plan for a number of reasons, such as:
a、Stale statistics
b、No statistics on a skewed, highly nonunique index
c、Poor choice of a primary index
d、Poorly written SQL, particularly with missing join constraints

Teradata执行计划中比较少product join ,比较常见的问题是 PI设置错了。
Aug 14
因为最近加班频繁,服务器空间到期了也没有花时间来折腾,导致itlife365因为服务器到期期间停止了服务一个月
,现已可以正常访问。
  期间发现百度果然是灵敏的。
  网站关闭期间,itlife365网站的 排名随机下降  。
  看来还需要慢慢的积累了 。。。。
  后续会添加更多丰富的内容
  继续ing ...
May 20

--begin by itlife365
如何读取oracle的大字段数据clob
首先,CLOB里存的是2进制
判定长度DBMS_LOB.GETLENGTH(col1)
获取文本DBMS_LOB.SUBSTR(col1,n,pos)
DBMS_LOB.SUBSTR(col1,10,1)表示从第1个字节开始取出10个字节
DBMS_LOB.SUBSTR(CLOB_VAR,32767)表示截取CLOB变量保存的全部数据
DBMS_LOB.FILECLOSE(IMG_BFILE)关闭文件
使用dbms_lob.substr时只能转化一部分,再多的时候就提示缓存不够。
dbms_lob.substr(test.clob_content,3500,1)
select dbms_lob.substr(student.name,3500,1) from student;

clob转化为字符串,SELECT  UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(col1,10,1))  FROM   tab1;
如果clob中包含空格则不能使用。

将clob类型转化成字符串
create  or  replace  function   getclob(
         table_name            in   varchar2,
         field_id              in   varchar2,
         field_name            in   varchar2,
         v_id                  in   number,
         v_pos                 in  number)  return   varchar2
is
         lobloc                clob;
         buffer                varchar2(32767);
         amount                number  :=   2000;
         offset                number  :=   1;
         query_str             varchar2(1000);
begin
     query_str   :='select   '||field_name||'  from   '||table_name||'  where   '||field_id||'=  :id   ';
     EXECUTE  IMMEDIATE  query_str  INTO  lobloc  USING   v_id;
     offset:=offset+(v_pos-1)*2000;
     dbms_lob.read(lobloc,amount,offset,buffer);
              return   buffer;
exception
       when  no_data_found   then
              return   buffer;
end;
--end by itlife365

Tags: ,
Mar 9
--begin by itlife365
现在比较少使用mysql了,突然要查通过日期过滤今天生成的数据,居然忘了
select * from student where age=***;
百度如下MySQL DATE_FORMAT() 函数用法如下:
MySQL DATE_FORMAT()定义和用法
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。

语法  DATE_FORMAT(date,format)
date 参数是合法的日期。format 规定日期/时间的输出格式。
可以使用的格式如下表格

格式描述
%a缩写星期名
%b缩写月名
%c月,数值
%D带有英文前缀的月中的天
%d月的天,数值(00-31)
%e月的天,数值(0-31)
%f微秒
%H小时 (00-23)
%h小时 (01-12)
%I小时 (01-12)
%i分钟,数值(00-59)
%j年的天 (001-366)
%k小时 (0-23)
%l小时 (1-12)
%M月名
%m月,数值(00-12)
%pAM 或 PM
%r时间,12-小时(hh:mm:ss AM 或 PM)
%S秒(00-59)
%s秒(00-59)
%T时间, 24-小时 (hh:mm:ss)
%U周 (00-53) 星期日是一周的第一天
%u周 (00-53) 星期一是一周的第一天
%V周 (01-53) 星期日是一周的第一天,与 %X 使用
%v周 (01-53) 星期一是一周的第一天,与 %x 使用
%W星期名
%w周的天 (0=星期日, 6=星期六)
%X年,其中的星期日是周的第一天,4 位,与 %V 使用
%x年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y年,4 位
%y年,2 位
MySQL DATE_FORMAT() 实例 demo

我们使用 NOW() 来获得当前的日期/时间:
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')
DATE_FORMAT(NOW(),'%m-%d-%Y') 
DATE_FORMAT(NOW(),'%d %b %y')
DATE_FORMAT(NOW(),'%d %b %Y %T:%f')

我的查询条件出来了
select * from student where age=date_format('2015-03-09','%Y-%m-%d'); 
how to use mysql DATE_FORMAT
--end by itlife365
Nov 27
如下内容来源于网络,供参考:
--begin itlife365
HOw do you ALTER table add partitions on a multilevel partitioned table?
ALTER TABLE Table_Name MODIFY PRIMARY INDEX (col1,col2,col3) ADD RANGE BETWEEN DATE '2013-01-01' AND DATE '2013-12-31' EACH INTERVAL '1' MONTH; 
*****************
forums.teradata#com/forum/database/modify-partition-range-in-nonempty-tables
  
Modify partition range in nonempty tables
Hi,
Is it possible to modify partition range in nonempty tables using alter table statement or by any other methods. If so, please share the syntax.
****************************
Hi,
Here the scenario, I have table partitioned by two columns(effective_Start_date and last_updated_date) and the table have data. partition range for effective start date is from 2008- 01-01 to 2013-12-01 each 1 month interval. My request is to modify the partition range from 2006-01-01 to 2013-12-01 without deleting the data. Please let me know is it possible in teradata 13.10V.
Many Thanks!
********************
create table test_ppi (
pi_field integer,
effective_Start_date date,
last_updated_date date
PRIMARY INDEX (pi_field)
PARTITION BY (
RANGE_N(effective_Start_date between date '2008-01-01' and date '2013-12-01' each interval '1' month),
RANGE_N(last_updated_date between date '2008-01-01' and date '2013-12-01' each interval '1' month)
);
insert into test_ppi values (1,date'2008-01-01',date'2008-01-01');
insert into test_ppi values (2,date'2010-01-01',date'2010-01-01');

show table test_ppi;
-- old

alter table test_ppi modify primary index
add range between date '2006-01-01' and '2007-12-31' each interval '1' month;
show table test_ppi;
-- new

************************************
Modify the partition
Hi Everyone,
 
I have a table which has a partition by a date field as it follows

PARTITION BY RANGE_N(RestoreDate  BETWEEN DATE '2008-04-01' AND DATE '2012-12-31' EACH INTERVAL '1' DAY , 
 NO RANGE);
And I would like to extend the partition, so the RestoreDate would start from '2005-01-01' to '2013-12-31',  How can I achieve this? Do I need to recreate the table? Do I need to drop the partition first and then create the new one? Any suggestions?
 
Thanks in advance!
*****************
Hi Kbos,
Make a copy of your table and then try this (prior replace db_name and table_name ) :
DROP STAT    db_name.table_name  COLUMN(PARTITION);
ALTER TABLE  db_name.table_name  MODIFY PRIMARY INDEX ADD RANGE BETWEEN DATE '2005-01-01' AND DATE '2008-03-31' EACH INTERVAL '1' DAY;
ALTER TABLE  db_name.table_name  MODIFY PRIMARY INDEX ADD RANGE BETWEEN DATE '2013-01-01' AND DATE '2013-12-31' EACH INTERVAL '1' DAY;         
COLLECT STATISTICS ON db_name.table_name   COLUMN (PARTITION) ;
Regards.

end--itlife365
分页: 1/59 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页