MySQL 函數使用場景

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 ‘%關鍵字%’

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章