1.获取当前时间函数
select now()
2.获取当前时间
select current_time()
3.时间转换字符串
select date_format(now(), '%Y-%m-%d');
4.时间转时间戳
select unix_timestamp(now());
5.字符串转时间
select str_to_date('2016-01-02', '%Y-%m-%d %H');
6.字符串转时间戳
select unix_timestamp('2016-01-02');
7.时间戳转时间
select from_unixtime(1451997924);
8.时间戳转字符串
select from_unixtime(1451997924,'%Y-%d');
获取当前时间是周几函数
select date_format(curdate(),'%w') from dual;
使用datefromat转换字符串 :
date_format(sap.sample_create,'%Y-%m-%d %H:%i:%s')
查询某个字段是否包含str,等同于in用法
FIND_IN_SET(str,strlist)
str 要查询的字符串
strlist 字段名 参数以”,”分隔 如 (1,2,6,8)
下面举例说明
test表中有如下字段及值
下面我想查询area中包含”1″这个参数的记录
SELECT * from test where FIND_IN_SET('1',area)
现在有个需求,在我们查询数据时希望在前面加上序号,这是怎么做呢?请看:
set @rowNum=0;
select @rowNum:=@rowNum+1 as num (num序号从1开始)
关于inplace into函数:
1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。(注意是根据主键或者唯一索引判断)
用法:inplace into test() values ()
时间范围查询:
今天
select * from 表名 where to_days(时间字段名) = to_days(now());
昨天
SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1
近7天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)
近30天
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)
本月
SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) , '%Y%m' )
上一月
SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) =1
查询本季度数据
select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now());
查询上季度数据
select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
查询本年数据
select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());
查询上年数据
select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));
查询当前这周的数据
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());
查询上周的数据
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;
对结果字段进行判断的函数
SELECT
`id` '用户ID',
`name` '用户名称',
(
CASE `state` WHEN 1 THEN '正常'
WHEN 2 THEN '不正常'
ELSE NULL
END
) '用户状态'
FROM
`user`
MySQL简单实现多字段模糊查询
SELECT * FROM `magazine` WHERE CONCAT(IFNULL(`title`,''),IFNULL(`tag`,''),IFNULL(`description`,'')) LIKE ‘%关键字%’