MySQL时间计算函数DATE_SUB()用法简介说明


摘要:
下文讲述MySQL数据库中时间计算函数DATE_SUB()的功能简介说明,如下所示:


MySQL DATE_SUB 功能说明:

MySQL DATE_SUB函数功能:
将一个时间值减去指定类型的数值后,并生成一个新的时间值。
DATE_SUB 语法:
DATE_SUB(date,INTERVAL,type)
DATE_SUB 参数说明:
date:一个MySQL时间表达式
INTERVAL:一个时间间隔的int类的表达式
type:
为下表中的间隔类型:微秒 秒
分 小时 天 周 月 季度 年 等等类型

MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH


MySQL DATE_SUB 举例应用:

 
--一月前
select DATE_SUB(CURDATE(), INTERVAL 1 Month) as monthTime; 
--一天前
select DATE_SUB(CURDATE(), INTERVAL 1 DAY) as  dayTime; 
--一年前
select DATE_SUB(CURDATE(), INTERVAL 1 YEAr) as newField; 
--指定日期三天前
SELECT DATE_SUB('2018-07-6', INTERVAL 3 DAY) AS newField;
---指定日期 3年2个月前
SELECT DATE_SUB('2019-06-02', INTERVAL '3-2' YEAR_MONTH) AS newField;  
 
SELECT DATE_SUB('2011-09-14 2:44:36', INTERVAL '2:26' HOUR_MINUTE) AS newField;  
DATE_SUB函数举例应用

DATE_SUB函数举例应用

MySQL 避免数据重复插入、更新sql脚本的方法分享


摘要:
下文讲述MySQL数据库中,避免数据重复插入的关键字(ignore,Replace,ON DUPLICATE KEY UPDATE)分享,如下所示:


ignore关键字

ignore关键字用于插入数据时,如果存在主键重复或唯一索引约束,则会自动忽略此脚本的运行,并返回影响的行数

 
INSERT IGNORE INTO `table_name` (`field1`, `field2`, `field3`) VALUES ('a', 'b', 'c');
---当出现主键或唯一索引的重复时,就自动忽略此脚本,并返回影响行数字0 
 
INSERT IGNORE INTO `table_name` (`field`) SELECT `field` FROM `table_name2`;
---采用表复制,如果存在主键重复或唯一索引重复时,则自动忽略插入记录


使用replace关键字插入数据

Replace into 语法

REPLACE INTO `table_name`(`field_name`, ...) VALUES (...);
REPLACE INTO `table_name` (`field_name`, ...) SELECT ...;
REPLACE INTO `table_name` SET `field_name`='value',

replace into功能:
替代插入,此关键字的功能同insert ignore into关键字非常的想象,
当如果(主键或唯一索引值重复时),先删除原行数据,再将新数据插入到数据表中
replace into返回值:
replace into返回此次操作所影响的行数,此值为
删除行和被插入行数之和

  例:keyId为主键  table_name数据表为空表
REPLACE INTO `table_name` (`keyId`, `info`) VALUES (1, 'maomao365.com');
---影响行数为1
---当第二次运行以上脚本时,则影响的行数为2
REPLACE INTO `table_name` (`keyId`, `info`) VALUES (1, 'maomao365.com');
 
ON DUPLICATE KEY UPDATE关键字说明

ON DUPLICATE KEY UPDATE关键字 常结合insert into 关键字一起使用,所起到的功能为:(“有则更新,无则插入”)
   当主键或唯一索引值重复时,执行update操作
   
 
  ---例:keyId 为主键 
  INSERT INTO `table_name` (`keyId`, `info`) VALUES (1,88) ON DUPLICATE KEY UPDATE `info`=`info`+1; 
  ---当 table_name表中存在keyId=1的记录时,以上脚本等效于以下
  UPDATE `table_name` SET `info`=`info`+1 WHERE `keyId`=1;
  
   ---当 table_name表中不存在keyId=1的记录时,以上脚本等效于以下
    INSERT INTO `table_name` (`keyId`, `info`) VALUES (1,88)

MySQL 数据库查询数据时 按照汉字的拼音首字母排序的方法分享


摘要:
下文讲述MySQL数据库中,数据表中数据按照汉字拼音首字母进行排序的方法分享,如下所示:

按照汉语首字母排序及是按照 A-Z的方式排序。

如果汉字按照GBK字符集进行存储,因为GBK字符集是按照汉字的拼音排序进行定义的,那么只需直接使用
order by info asc


如果数据列存储采用utf-8字符集进行存储,那么此时我们如果需按照拼音进行排序时,那么需要将列值转换为相应的字符集,
然后再进行排序
order by convert(info using gbk) asc;