Oracle和MySQL日期类型转换

在Oracle中可以通过 函数 to_date(char,fmt),轻易的将日期转换为我们想要的fmt格式输出,

通过 to_char(date[,fmt])可以实现将date按照fmt格式化成字符串输出,这为我们比较日期大大提供了方便,但是MySQL并没有这两个函数。

MySQL日期和字符相互转换方法

date_format(date,‘%Y-%m-%d’) -------------->oracle中的to_char();

str_to_date(str_date,‘%Y-%m-%d’) -------------->oracle中的to_date();

1、MySQL DATE_FORMAT() 函数

定义和用法
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。
语法

DATE_FORMAT(date,format)
date 参数是合法的日期。 format 规定日期/时间的输出格式。

可以使用的格式有:

项目Value
%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 位

下面的脚本使用 DATE_FORMAT() 函数来显示不同的格式。我们使用 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')

结果如下所示:

Nov 04 2008 11:45 PM
11-04-2008
04 Nov 08
04 Nov 2008 11:45:34:243

2、MySQL STR_TO_DATE()函数

STR_TO_DATE(str,format)函数是将时间格式的字符串(str),按照所提供的显示格式(format)转换为DATETIME类型的值。DATE_FORMAT(date,format)函数则是把数据库的日期转换为对应的字符串格式,比较常见,不做解释。

SELECT STR_TO_DATE('2017-01-06 10:20:30','%Y-%m-%d %H:%i:%s') AS result;

在这里插入图片描述

SELECT STR_TO_DATE('2017-01-06 10:20:30','%Y-%m-%d') AS result2;

在这里插入图片描述

3、substring_index()函数

substring_index(参数str,参数delim,参数count)
参数列表含义:

str :要处理的字符串
delim:分隔符
count:计数

案例演示

	  #--假如我这里有一个字符串 str=www.Geekerjun.com    str就像数据库中的一个字段

      substring_index(str,'.',1)

      结果是:www

      substring_index(str,'.',2)

      结果是:www.Geekerjun

      也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容!

      相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容,如:

      substring_index(str,'.',-2)

      结果为:Geekerjun.com

如果我要中间的的Geekerjun怎么办?
很简单的,两个方向:从右数第二个分隔符的右边全部,再从左数的第一个分隔符的左边 就可以了

#--SQL语句如下
select substring_index(substring_index('www.GeekerJun.com','.',-2),'.',1);

4、LENGTH函数

LENGTH函数用于返回字符串的字节长度,长度单位为字节

使用uft8编码字符集时,一个汉字是3个字节,一个数字或字母是一个字节

与CHAR_LENGTH函数的区别
CHAR_LENGTH函数用于返回字符串的长度,长度单位为字符,不管汉字,数字或是字母都算是一个字符**,**包括中英文标点符号,空格也算是一个字符

语法结构

LENGTH(str)

str:计算长度的字符串

-- 4
SELECT LENGTH('text');
-- 5
SELECT LENGTH('12345');
-- 9
SELECT LENGTH('数据库');
-- 0
SELECT LENGTH('');
-- 2 空格是一个字节
SELECT LENGTH('  ');
-- 3 英文标点符号是一个字节
SELECT LENGTH('...');
--- 9 中文标点符号是3个字节,
SELECT LENGTH('。。。');
-- Null
SELECT LENGTH(NULL);

-- CHAR_LENGTH函数用于返回字符串的长度,长度单位为字符
-- 4
SELECT CHAR_LENGTH('text');
-- 5
SELECT CHAR_LENGTH('12345');
-- 3
SELECT CHAR_LENGTH('数据库');

5、IFNULL() 函数

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

IFNULL() 函数语法格式为:

IFNULL(expression, alt_value)

参数说明:
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。

参数 描述
expression 必须,要测试的值
alt_value 必须,expression 表达式为 NULL 时返回的值

实例

第一个参数为 NULLSELECT IFNULL(NULL,RUNOOB);
以上实例输出结果为:

RUNOOB
第一个参数不为 NULLSELECT IFNULL(Hello,RUNOOB);
以上实例输出结果为:

Hello

6、 REPLACE() 函数

语法:replace(object,search,replace)

意思:把object中出现search的全部替换为replace

REGADDR"宁夏.银川市.兴庆区.胜利街街道."

REPLACE(REGADDR,'.',''))

结果为:

宁夏银川市兴庆区胜利街街道

7、TRIM() 函数

语法:trim([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

以下举例说明:
mysql> SELECT TRIM(’ phpernote ');
-> ‘phpernote’

mysql> SELECT TRIM(LEADING ‘x’ FROM ‘xxxphpernotexxx’);
-> ‘phpernotexxx’

mysql> SELECT TRIM(BOTH ‘x’ FROM ‘xxxphpernotexxx’);
-> ‘phpernote’

mysql> SELECT TRIM(TRAILING ‘xyz’ FROM ‘phpernotexxyz’);
-> ‘phpernotex’

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐