存儲過程系統時間
A. sql定義日期變數代碼
您好,存儲過程里參數的默認值不能使用函數,所以不能在存儲過程里直接把參數的默認值設置為當前系統時間,不過可以在存儲過程里賦值。還有一點疑問,既然@myday是當前系統時間了,為什麼還要做成參數呢?
CREATE PROCEDURE pro_test
@myday char(10)
AS
set @myday=convert(char(10),getdate(),21)
update mytable set status = 1 where day>@myday
GO
@myday不為參數時可以這么寫
CREATE PROCEDURE pro_test
AS
declare @myday char(10)
set @myday=convert(char(10),getdate(),21)
update mytable set status = 1 where day>@myday
B. 各位高手請問oracle 存儲過程里時間為"23-JUN-11"如何轉換為標准日期格式"YYYY-MM-DD" 謝謝了
跟你的系統時間格式也有關系,不知道你要在哪裡改這個格式,如果這個是日期格式的話,可以這樣改成字元串格式:to_char(日期欄位, 'yyyy-mm-dd'),如果需要輸出日期格式就再加一層:to_date(to_char(日期欄位, 'yyyy-mm-dd'), 'yyyy-mm-dd')
C. 怎樣用SQL需要修改系統當前時間因為系統時間不對現在。
這個東西得用個擴展存儲過程xp_cmdshell 用來執行dos命令time的,
sql2000的話可以直接用,2000以上的版本默認是關閉這個擴展存儲過程的,要開的話用下面腳本
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'xp_cmdshell', 1;
GO
RECONFIGURE;
GO
改時間的話:exec xp_cmdshell 'time xxxx-xx-xx'
D. Sql中取得當前系統時間
如果要在SQL里寫的話,遞增需要用存儲過程或觸發器或用戶函數來寫。
如果只是為了不重復的話,可以用當前時間的millisecond來區分,如我在你另一相同的問題中回答的:
http://..com/question/11983880.html
用 DATEPART() 結合 GETDATE() 等函數來取值
SELECT CAST(DATEPART(Hour,GETDATE()) AS nvarchar(2)) +
CAST(DATEPART(minute,GETDATE()) AS nvarchar(2)) +
CAST(DATEPART(second,GETDATE()) AS nvarchar(2)) +
CAST(DATEPART(millisecond,GETDATE()) AS nvarchar(20))
這樣可以得到不重復的值。
E. 存儲過程第一次執行耗時30分鍾,第二次開始每次耗時不到3分鍾,這是什麼原因
sql是高級語言,資料庫系統執行sql之前要將sql語句進行解析(相當於編譯),這個過程叫硬解析;資料庫系統每次執行sql之前都會檢查共享池中是不是存在已經解析過的語句,如果有就拿來直接用,這叫軟結息。軟解析比硬解析效率高,這是影響因素之一;
二、第一次執行可能沒有走索引,第二次執行使用第一次執行的執行計劃
三、看你的存儲過程做了些什麼,有可能第一次把活幹完了,導致第二次執行沒什麼活干
以上回答基於oracle體系結構
F. sql server 存儲過程 創建當前時間
Sql Server 中一個非常強大的日期格式化函數: 獲得當前系統時間,GETDATE(): 2008年01月08日 星期二 14:59 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2008 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/08 Select CONVERT(varchar(100), GETDATE(), 2): 08.05.16 Select CONVERT(varchar(100), GETDATE(), 3): 16/05/08 Select C
G. 存儲過程中 EXIT WHEN STARTTIME>=SYSDATE-1/24;是什麼意思
首先。
EXIT WHEN
意思是 當某種條件滿足的情況下 跳出 循環。
下面是一個最簡單的例子
EXIT WHEN testvalue >= 5;
SQL> DECLARE
2 testvalue INT;
3 BEGIN
4
5 testvalue := 0;
6
7 LOOP
8 testvalue := testvalue + 1;
9 dbms_output.put_line( TO_CHAR(testvalue) );
10 EXIT WHEN testvalue >= 5;
11 END LOOP;
12
13 END;
14 /
1
2
3
4
5
PL/SQL procere successfully completed.
然後
STARTTIME>=SYSDATE-1/24;
STARTTIME 應該是你存儲過程裡面的一個變數。
SYSDATE 是 資料庫系統的 當前時間
SYSDATE-1/24 是 資料庫系統的 當前時間 - (1/24天) = 一小時以前
最後
EXIT WHEN STARTTIME>=SYSDATE-1/24;
意思就是,如果 STARTTIME 這個變數的數值,大於等於 一小時以前
那麼跳出循環。