日期操作 

1. 操作当前日期和时间

oracle
  Select SYSDATE  FROM dual;
PostgreSQL
  Select CURRENT_DATE;

  Select NOW();返回日期时间还包括时区

2. 操作时间的获取子域

oracle :  
Select TO_CHAR(SYSDATE,\'Day\') FROM dual;

PostgreSQL :
 Select DATE_PART(\'dow\',date \'now\'); //dow = day of week
 Select DATE_PART(\'hour\', timestamp \'now\')

oracle中的TO_CHAR可以从日

期中拿到所需要的子域,日期,小时,分钟等。

3. 时间间隔,在一些应用中需要知道两个时间间隔多远

oracle :
Select TO_DATE(\'25-Nov-2000\',\'dd-mon-yyyy\') - TO_DATE(\'25-Aug-1969\',\'dd-mon-yyyy\') FROM dual;

PostgreSQL :
 Select AGE(CURRENT_DATE, \'25-Aug-1969\');

测量不同时间的间隔,不同的数据库之间函数语法有很大的不同。

4. 日期时间格式化

oracle
  Select TO_CHAR(SYSDATE,\'dd-Mon-yyyy hh:mi:ss PM\') FROM dual;
PostgreSQL
  Select TO_CHAR (timestamp(CURRENT_DATE),\'dd-Mon-yyyy hh:mi:ss PM\');

 

字符串操作

1. 字符串中包含字符

oracle
  Select INSTR(\'Great\',\'eat\') FROM dual;
PostgreSQL
  Select POSITION(\'eat\' IN \'great\');

 

通过上面的这些函数可以确定字符串在另一个字符串中的位置(及另一个字符串包含这个字符串的位置)。

2. 字符串去掉空格

oracle
  Select LTRIM(\'  sql_in_a_nutshell\'),
     Select RTRIM(\'sql_in_a_nutshell      \'),
     TRIM(\'     sql_in_a_nutshell      \')
  FROM dual;
PostgreSQL
  Select TRIM(LEADING FROM \'     sql_in_a_nutshell\'),
      TRIM(TRAILING FROM \'sql_in_a_nutshell     \'),
      TRIM(BOTH FROM \'     sql_in_a_nutshell     \');

 

3. 上面清除空格相反的操作,添加空格

oracle
  Select LPAD((\'sql_in_a_nutshell\', 20, \' \'),
    RPAD((\'sql_in_a_nutshell\', 20, \' \')
  FROM dual;
PostgreSQL
  Select LPAD(\'sql_in_a_nutshell\', 20, \' \'), 
    RPAD(\'sql_in_a_nutshell\', 20, \' \');

 
上面支持该操作的数据库的函数都相同,并且都包括从左和右添加空格的方法。

4. 字符串替换

oracle [returns \'wabbit_hunting_season\']
  Select
     REPLACE(\'wabbit_season\',\'it_\',\'it_hunting_\')
  FROM dual;
PostgreSQL
  Select TRANSLATE(\'wabbit_season\',\'it_\',\'it_hunting_\');
  Select replace(\'wabbit_season\',\'it_\',\'it_hunting_\');

 

5. 字符串截取

oracle
  Select SUBSTR(\'wabbit_duck_season\', 7, 11)
  FROM dual;
PostgreSQL
  Select SUBSTR(\'wabbit_duck_season\', 7, 11);

 

条件判断

1. 条件判断

oracle
  Select DECODE (payments_info,\'CR\',\'Credit\',\'DB\',\'Debit\', null) FROM dual;

PostgreSQL
  Select CASE
      WHEN foo = \'hi\'   THEN \'there\'
      WHEN foo = \'good\' THEN \'bye\'
      ELSE \'default\'
  END
  FROM t2;

上面的函数我们就不多作解释了,很容易理解,我们来说一下mysqlif()函数,如果第一个参数为

true那么返回地二个参数,否则返回第三个参数。

2. 判断空函数

oracle
  Select NVL(foo,\'Value is Null\')
  FROM dual;
PostgreSQL 
  Select coalesce(foo,\'Value is Null\')

 

3. 下面与上面的函数不同

oracle
  Select DECODE(foo,\'Wabbits!\',NULL)
  FROM dual;
PostgreSQL
  Select NULLIF(foo, \'Wabbits!\'); 

函数语法:NULLIF(expression1, expression2)
如果 expression1 等于 expression2则返回 NULL,如果expression1的值为null,也返回NULL

 

版权声明:本文为space-place原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/space-place/space-place/p/8543811.html