mysql之常用函数及sql语句

2018-06-11  本文已影响13人  iszengmh

参考链接(如有侵权立即删除)

MYSQL日期获取(本月最后一天、本月第一天、下个月第一天、本月天数、一个月前那一天、当前时间与一个月前之间的天数)——CSDN@
combating

mysql取系统当前时间的函数——CSDN@Marjorie_Sha
MYSQL中可以实现类似IF判断的方法——博客园@奋斗的羊仔
mysql 获取当前日期周一和周日——CSDN@huanghanqian
mysql格式化日期——博客园@都市烟火
mysql 数据库中最新的一条记录 sql查询语句——百度经验@412482552

正文

常用函数

日期函数及常用时间计算

# 函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
NOW()
# 获取当前日期,不包含times
curdate() # 2018-06-11
# 获取本月的最后一天
last_day(curdate()); 
#获取本月第一天
select date_add(curdate(), interval - day(curdate()) + 1 day); 
#获取下个月第一天
select date_add(curdate() - day(curdate()) + 1, interval 1 month); 
#获取本月天数
select day(last_day(curdate())); 
#获取一个月前那一天
select date_sub(curdate(), interval 1 month); 
#获取当前时间与一个月之间的天数
select datediff(curdate(), date_sub(curdate(), interval 1 month)); 
# 获取当前日期在本周的周一 
select subdate(curdate(),date_format(curdate(),'%w')-1)
# 获取下周日(由于系统默认一周的开始时间是周日,所以获取下周日,通常是我们所认为的本周日)
select subdate(curdate(),date_format(curdate(),'%w')-7)
# 取一天的结束时间
select DATE_ADD(DATE_ADD(str_to_date(DATE_FORMAT(NOW(),'%Y-%m-%d'),'%Y-%m-%d %H:%i:%s'),INTERVAL 1 DAY),INTERVAL -1 SECOND);  #2018-06-11 23:59:59
# 格式化日期 DATE_FORMAT(date,format),查看本文详细
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p') # Jun 11 2018 09:13 AM
date_format(NOW(), '%Y-%c-%d %h:%i:%s' ) # 2018-6-11 09:15:26

格式化日期详细说明

格式 说明
%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)
%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 位

判断

# case……when…… else……END
CASE expression
WHEN value1 THEN returnvalue1
WHEN value2 THEN returnvalue2
WHEN value3 THEN returnvalue3
……
ELSE defaultreturnvalue
END


# IF(expr1,expr2,expr3)
select t.name,if(t.weight<80,'正常','肥胖') 体重 from t_customer t
# ELT(N,str1,str2,str3,...)
# 如果 N = 1,返回 str1,如果N = 2,返回 str2,等等。如果 N 小于 1 或大于参数的数量,返回 NULL。
SELECT
    t. NAME,
    ELT(
        t. LEVEL,
        '超级VIP',
        'VIP',
        '普通'
    ) 客户类型
FROM
    t_customer t

字符串拼接

# CONCAT(string1,string2,…)
concat('a=','b') # a=b
# CONCAT_WS(separator,str1,str2,...)
CONCAT_WS('=','a','b') # a=b
CONCAT_ws(' ',date_format(NOW(), '%Y-%c-%d' ),DATE_FORMAT(NOW(),'%h:%i:%s')) # 2018-6-11 09:26:40
# 将多组数据合并为一个字符串 separator 是关键字,后面表示用逗号分隔
GROUP_CONCAT(dd.dictionary_Name separator ',') 

字符串转Date

#str_to_date('字符串日期','格式')
str_to_date('2017-10-16 15:30:28','%Y-%m-%d %H:%i:%s')

查询

# 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始); 可在博客置顶状态灵活运用
INSTR(字段名, 字符串);

常用sql语句

获取最新一条记录

SELECT mytime from table order by mytime desc LIMIT 1

博客“置顶”状态,排序

# 将带有置顶字段的数据进行排序,也就是排前面
select *from forum t order by  instr(t.state,'置顶') desc

查询多条语句,并拼接成一个字符串

# 查出多个分类数据,拼接成一个字符串
select GROUP_CONCAT(dd.dictionary_Name separator ',')  from t_data_dictionary dd where FIND_IN_SET(dd.dictionary_id , 'abfdfa,dsfoisdf,weorieuo')
上一篇下一篇

猜你喜欢

热点阅读