MySQL —— to_char、to_date自定义函数

之前已分析 MySQL与Oracle在日期操作相关的差异

本文是用自定义函数实现to_char、to_date,此方法适用快速进行数据库兼容,减少代码的改动。

1、to_char

除日期外的类型转 字符串,可用convert(expr, char)或cast(expr as char)。其具体用法可参考 MySQL类型转换函数 —— binary、cast()、convert()

-- 此自定义函数只能解决 日期转字符串格式
-- DELIMITER $$  定义结束符。MySQL默认的结束符是分号,但是函数体中可能用到分号。为了避免冲突,需要另外定义结束符。
DELIMITER $$
DROP FUNCTION IF EXISTS to_char$$
create function to_char(d datetime, format varchar(40))
returns varchar(40) deterministic
begindeclare str varchar(40) DEFAULT '';set str = replace(format, 'YYYY', '%Y'); set str = replace(str, 'yyyy', '%Y');  set str = replace(str, 'MM', '%m');    set str = replace(str, 'mm', '%m');    set str = replace(str, 'DD', '%d');    set str = replace(str, 'dd', '%d');    set str = replace(str, 'HH24', '%H');  set str = replace(str, 'hh24', '%H');  set str = replace(str, 'HH', '%h');    set str = replace(str, 'hh', '%h');    set str = replace(str, 'MI', '%i');    set str = replace(str, 'mi', '%i');    set str = replace(str, 'SS', '%s');    set str = replace(str, 'ss', '%s');    return date_format(d, str);
end $$
DELIMITER ;

2、to_date

-- TO_DATE
delimiter $$
drop function if exists to_date$$
create function to_date(s varchar(40), format varchar(40))
returns datetime deterministic
begindeclare str varchar(40) DEFAULT '';set str = replace(format, 'YYYY', '%Y'); set str = replace(str, 'yyyy', '%Y');  set str = replace(str, 'MM', '%m');    set str = replace(str, 'mm', '%m');    set str = replace(str, 'DD', '%d');    set str = replace(str, 'dd', '%d');    set str = replace(str, 'HH24', '%H');  set str = replace(str, 'hh24', '%H');  set str = replace(str, 'HH', '%h');    set str = replace(str, 'hh', '%h');    set str = replace(str, 'MI', '%i');    set str = replace(str, 'mi', '%i');    set str = replace(str, 'SS', '%s');    set str = replace(str, 'ss', '%s');    return str_to_date(s, str);
end $$
delimiter ;

补充:

-- Oracle
TO_DATE(column, 'DD MONTH YYYY', 'NLS_DATE_LANGUAGE = American')
-- MySQL
str_to_date(column,'%d-%M-%Y')

MySQL —— to_char、to_date自定义函数相关推荐

  1. mysql存储过程与自定义函数

    2019独角兽企业重金招聘Python工程师标准>>> #mysql存储过程与自定义函数: delimiter $ 1.最简单的存储过程 create procedure test( ...

  2. mysql存储过程和自定义函数

    2019独角兽企业重金招聘Python工程师标准>>> 存储过程简介 SQL语句需要先编辑后执行,而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储过程在数据库中,用户通过 ...

  3. MySQL学习笔记—自定义函数

    MySQL学习笔记-自定义函数 注释语法: MySQL服务器支持3种注释风格: 从'#'字符从行尾. 从'– '序列到行尾.请注意'– '(双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如 ...

  4. mysql 8.0 自定义函数_PHP+Mysql防止SQL注入的方法(life)

    这篇文章介绍的内容是关于PHP+Mysql防止SQL注入的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 我的官方群点击此处. 方法一: mysql_real_escape_str ...

  5. Oracle to_char() to_date() to_number()函数

    TO_CHAR 是把日期或数字转换为字符串 TO_DATE 是把字符串转换为数据库中得日期类型转换函数 TO_NUMBER 将字符转化为数字  TO_CHAR 使用TO_CHAR函数处理数字 TO_ ...

  6. mysql 如何创建自定义函数

    mysql创建一个函数 delimiter $$ create function 函数名字() returns 返回值类型 begin 函数体- return 返回值(注意类型必须和上面的一样) en ...

  7. mysql存储过程和自定义函数_MySQL存储过程/存储过程与自定义函数的区别

    语法: 创建存储过程: CREATE[definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_paramet ...

  8. mysql工作日_mysql自定义函数计算时间段内的工作日(支持跨年)

    ① 同一年的情况下计算工作日函数 CREATE DEFINER=`root`@`%` FUNCTION `WORKDAYSONEYEAR`(`datefrom` datetime,`dateto` d ...

  9. mysql 经纬度距离 自定义函数_mysql 经纬度计算距离 自定义函数

    这些经纬线是怎样定出来的呢? 地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作&quo ...

最新文章

  1. mysql优化 博客园_MySQL优化
  2. 多线程和多进程的差别(小结)
  3. 移动广告平台到底哪个好?哪个能赚的米米多?
  4. 随机过程:高斯函数导数、梯度
  5. restful适用于移动互联网厂商作为业务_Restful架构思想
  6. 二进制转十进制 十进制转二进制
  7. addEventListener监听
  8. bat命令打开指定网页进入全屏
  9. java7 xp版下载64位,xp32位系统可用最高版本jdk64位系统win10 64位系统
  10. 想长胖的人看过来,几招教你变胖|猎人营
  11. python实现whois查询_python实现whois查询功能的方法
  12. [Webpy]在webpy中使用jinja2模板
  13. 嵌入式开发学习笔记9-做一个好玩的LED闪烁
  14. 支持向量机检测DGA
  15. html页面显示代码插件,jQuery – 高亮动态显示页面HTML代码插件
  16. JAVA容器,什么叫JAVA容器?
  17. 视频监控国标协议介绍
  18. python polygon_python – Polygon.contains和Polygon.within有什么区别?
  19. mysql查询学号和姓名_数据库SQL语句中 查询选修了全部课程的学生的学号和姓名...
  20. Vue 批量导入 excel 表格数据

热门文章

  1. C/C++文件IO输入输出操作——FILE*、fstream、windowsAPI
  2. 音素,音节,单词,句子,语言
  3. Metric Learning Survey 文章汇总
  4. UNITY性能优化⭐『图集』在 Unity 2019.x版本前的使用方法,及提供『图集自动化工具』
  5. 2013年中国互联网创业投资盘点
  6. 2020年10月18日自考总结
  7. day7-Stacking与案例(幸福感预测)
  8. Labview中的隧道和移位寄存器
  9. oracle的nvl函数返回的类型,oracle的nvl函数的用法-查询结果若是NULL则用指定值代(转) sober...
  10. Android Studio ListView数据适配器实现通讯录设计(头像加名称)