1、seq
在oracle中获取下一个ID可以用seq,在mysql中可以设置某列自增
但是在同时添加主从表是设置自增不好在同一个事物中处理。
结合网上提供的方法,这里写了个可以获得每个表的seq的函数
CREATE DEFINER=`root`@`%` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS bigint(20) BEGIN DECLARE value BIGINT; update myseq set seq = last_insert_id(seq+1) where tablename = lower(seq_name); SELECT seq INTO value from myseq WHERE tablename = lower(seq_name); RETURN value; END;
2、在执行insert into 时不能出现表别名
3、需要注意数据库中表和视图大小写,否则会出错
4、获得当前时间可用system(),或者now(),
在oracle中的 to_date(''%s'',''yyyy-mm-dd hh24:mi:ss'')需要用 ( str_to_date(’‘%s’‘, '%Y-%c-%d %H:%i:%s'))
或者 ( DATE_FORMAT('2010-10-04 22:23:00', '%Y-%c-%d %H:%i:%s')) 替换
DATE_FORMAT(date,format)
根据format 字符串安排date 值的格式。
以下说明符可用在 format 字符串中:
说明符说明
%a工作日的缩写名称 (Sun..Sat)
%b月份的缩写名称 (Jan..Dec)
%c月份,数字形式(0..12)
%D带有英语后缀的该月日期 (0th, 1st, 2nd, 3rd, ...)
%d该月日期, 数字形式 (00..31)
%e该月日期, 数字形式(0..31)
%f微秒 (000000..999999)
%H小时(00..23)
%h小时(01..12)
%I小时 (01..12)
%i分钟,数字形式 (00..59)
%j一年中的天数 (001..366)
%k小时 (0..23)
%l小时 (1..12)
%M月份名称 (January..December)
%m月份, 数字形式 (00..12)
%p上午(AM)或下午( 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位数)
%%‘%’文字字符
所有其它字符都被复制到结果中,无需作出解释。
注意:‘%’字符要求在格式指定符之前。
5、在oracle 中用rownum来限制行数,这个rownum必行写在where 后面
但是在mysql中是用limit 而且只能是在sql 语句的最后面。
浙公网安备 33010602011771号