mysql存儲過程日期
1、存儲過程定義:
存儲過程是事先經過編譯並存儲在資料庫中的一段 SQL 語句的集合,調用存儲過程可以簡化應用開發 人員的很多工作,減少數據在資料庫和應用伺服器之間的傳輸,對於提高數據處理的效率是有好處的。 存儲過程思想上很簡單,就是資料庫 SQL 語言層面的代碼封裝與重用。
2、特點:
封裝,復用 : 可以把某一業務SQL封裝在存儲過程中,需要用到 的時候直接調用即可。
可以接收參數,也可以返回數據 :再存儲過程中,可以傳遞參數,也可以接收返回 值。
減少網路交互,效率提升 : 如果涉及到多條SQL,每執行一次都是一次網路傳 輸。 而如果封裝在存儲過程中,我們只需要網路交互一次可能就可以了。
3、基本語法
(1)創建:
(2)調用:
(3)查看:
(4)刪除
注意: 在命令行中,執行創建存儲過程的SQL時,需要通過關鍵字 delimiter 指定SQL語句的 結束符。
❷ MySQL 用存儲過程更新員工工作時間表
mysql更新表中數據的存儲過程,代碼如下:
mysql> CREATE TABLE Employee( //創建表
-> id int,
-> first_name VARCHAR(15),
-> last_name VARCHAR(15),
-> start_date DATE,
-> end_date DATE,
-> salary FLOAT(8,2),
-> city VARCHAR(10),
-> description VARCHAR(15)
-> );
Query OK, 0 rows affected (0.01 sec)
--//導入數據
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date, salary, City, Description)
-> values (1,'Jason', 'Martin', '19960725', '20060725', 1234.56, 'Toronto', 'Programmer');
Query OK, 1 row affected (0.00 sec)
❸ mysql存儲過程中怎麼用date
跟字元串一樣的處理,當然還有一些 特殊的 時間處理函數DELIMITER $$DROP PROCEDURE IF EXISTS `datatime`$$CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PROCEDURE `iccsdb`.`datatime`() /*LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'*/ BEGIN DECLARE dattime DATETIME DEFAULT '2013-10-10'; SELECT dattime FROM DUAL; END$$ DELIMITER ;
❹ mysql 存儲過程怎樣實現根據判斷當前時間是否屬於某個時間段修改資料庫欄位值
#創建存儲過程
drop procere if exists test;
create procere test()
BEGIN
create table tmp1(startdate datetime,enddate datetime);
insert into tmp1 select startdate,enddate from d where startdate<=curdate() and enddate>=curdate();
update d set state=1 where startdate in(select startdate from tmp1) and enddate in(select enddate from tmp1);
update d set state=2 where startdate not in(select startdate from tmp1) and enddate not in(select enddate from tmp1);
drop table tmp1;
end;
#調用存儲過程
call test();
思路:
創建一張表,先將當前時間與表內時間對比,如果當前時間在哪一行數據的開始時間范圍和結束時間范圍內則將數據插入tmp1表,進行update,將開始時間和結束時間都等於tmp1表內的startdate和enddate時改變該行state=1,不等於則改變該行state=2,刪除使用過的tmp1表,結束。
注意:由於沒有一個主鍵值,這里採用where startdate not in(select startdate from tmp1) and enddate not in(select enddate from tmp1)以及 where startdate in(select startdate from tmp1) and enddate in(select enddate from tmp1)並不是很好的選擇。
❺ mysql存儲過程裡面怎樣定義日期類型的參數這兩個日期參數是當條件賦值進去的,應該帶@符號求解
和java對應的是
java.sql.Date和 java.sql.Timestamp
~~
❻ mysql 存儲過程
.關於MySQL的存儲過程
存儲過程是資料庫存儲的一個重要的功能,但是MySQL在5.0以前並不支持存儲過程,這使得MySQL在應用上大打折扣。好在MySQL 5.0終於開始已經支持存儲過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫編程的靈活性。
MySQL存儲過程的創建
(1).格式
MySQL存儲過程創建的格式:CREATE PROCEDURE過程名([過程參數[,...]])
[特性...]過程體
這里先舉個例子:
mysql>DELIMITER//
mysql>CREATEPROCEDUREproc1(OUTsint)
->BEGIN
->SELECTCOUNT(*)INTOsFROMuser;
->END
->//
mysql>DELIMITER;
- 註:
(1)這里需要注意的是DELIMITER //和DELIMITER ;兩句,DELIMITER是分割符的意思,因為MySQL默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成SQL語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用DELIMITER關鍵字申明當前段分隔符,這樣MySQL才會將";"當做存儲過程中的代碼,不會執行這些代碼,用完了之後要把分隔符還原。
(2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。
(3)過程體的開始與結束使用BEGIN與END進行標識。
❼ MySQL和SQL Server存儲過程寫法上有什麼區別
一、多數指令是相同的,包括創建和修正存儲過程的指令。
二、很多細微的指令有不同,具體如下(不僅):
1 mysql支持enum,和set類型,sql server不支持。
2 mysql不支持nchar,nvarchar,ntext類型。
3 mysql的遞增語句是AUTO_INCREMENT,而mssql是identity(1,1)。
MYSQL:create table basic(id int key auto_increment,name varchar(20));
MSSQL: create table basic(id int identity(1,1) , name varchar(20))
4 msms默認到處表創建語句的默認值表示是((0)),而在mysql裡面是不允許帶兩括弧的。
5 mysql需要為表指定存儲類型。
6 mssql識別符是[],[type]表示他區別於關鍵字(可選用來包含表名、欄位名),但是mysql卻是 `(重音符,也就是按鍵1左邊的那個符號)。
7 mssql支持getdate()方法獲取當前時間日期,但是mysql裡面可以分日期類型和時間類型,獲取當前日期是cur_date(),當前完整時間是 now()函數。
8 mssql不支持replace into 語句,但是在最新的sql20008裡面,也支持merge語法。
❽ mysql存儲過程:
dayofyear不是mysql自有的函數,要看你的存儲過程具體是怎麼定義的了,所謂因地制宜。。。
_date應該是一個變數,now()應該是獲取當前時間,這個是可以猜到的
dayofyear(_date)就是將_date這個變數格式化為定義好的dayofyear格式的
然後再將(now())-dayofyear(_date)整體格式化為dayofyear格式
不知道這樣說你能明白不?或者把完整的存儲過程貼出來看下就知道了
❾ mysql存儲過程怎麼把日期時間轉時間戳
UNIX_TIMESTAMP
SELECT UNIX_TIMESTAMP('2015-04-29')