儲存過程生成訂單號

2021-10-06 15:00:19 字數 1344 閱讀 6896

delimiter $$

use `ppd-sit`$$

drop procedure if exists `createorderno`$$

create definer=`root`@`%` procedure `createorderno`(out `neworderno` char(15))

begin

declare currentdate char (8) ;-- 定義currentdate為當前日期,格式為:年+月+日

declare maxno int default 0 ; -- 定義maxno為離現在最近的滿足條件的訂單編號的流水號最後5位,如:2018042600002的maxno=2

declare oldorderno char (15) default '' ;-- 定義oldorderno為離現在最近的訂單編號,預設為空

declare neworderno char (15) default '' ;-- 定義neworderno為新生成的訂單編號,預設為空

select date_format(now(), '%y%m%d') into currentdate ;-- 當前日期 訂單編號形式:年月日+流水號,如:2018042600002

/* 從test_orders表中查出最新一條記錄賦值給oldorderno */

select ifnull(order_no, '') into oldorderno -- ifnull(expr1,expr2),接收兩個引數,如果不是null,則返回第乙個,如果是null,返回第二個

from course_order

where to_days(create_time) = to_days(now())

order by id desc limit 1 ; -- 有多條時只顯示離現在最近的一條

if oldorderno != '' then

set maxno = convert(substring(oldorderno, -5), decimal) ;-- substring(oldorderno, -5):訂單編號如果不為『『擷取訂單的最後5位

end if ;

select

concat('od',currentdate, lpad((maxno + 1), 5, '0')) into neworderno ; -- lpad((maxno + 1), 5, '0'):如果不足5位,將用0填充左邊

select neworderno;

end$$

delimiter ;

訂單號生成

之前用uuid 因為太長改用16位因此在網上找到一下這種做法,年月日擷取 時間戳 在加隨機數 生成乙個訂單 獲取年份 var date j f c d e b h i a date gettime tostring var ordersn date new date getfullyear 2015...

PHP訂單號的生成

前陣子,公司有個電子商務專案,需要生成訂單號。當時的考慮很簡單,取系統時間加上隨機數,或者使用 uniqid 方法。我們都知道,訂單號最基本的要求就是唯一,這個條件必須滿足。仔細考慮下上述方法,在顧客購買量少的情況下,訂單重複的可能性為零,但是在購買高蜂期生成的訂單號重複是很有可能發生的。所以上述方...

redis 生成訂單號學習

題目是生成明天的訂單號,刪除昨天的訂單號,在redis操作,訂單號暫定規則為年月日接五位數。如2018102200001 當乙個訂單生成的時候,去redis去取訂單號,去玩後刪掉。這個取和刪除操作是乙個命令發過去的。不能寫成兩個語句。redis五種結構詳解 redis五種結構詳解 redis設定li...