SELECT A.CLASS_ID,CLASS_NAME,CLASS_TEACHER,DAY,ROOM FROM courses_new JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = '496511126') A
WHERE A.CLASS_ID = courses_new.CLASS_ID;
==>使用"學號" 查詢該學生的課表(選修的課) 可在SELECT調整需要的欄位
SELECT CLASS_NAME FROM (SELECT A.CLASS_ID,CLASS_NAME,CLASS_TEACHER,DAY,ROOM,START_TIME,END_TIME FROM courses_new JOIN
(SELECT CLASS_ID FROM schedule WHERE S_ID = '496511126') A
WHERE A.CLASS_ID = courses_new.CLASS_ID ) B
WHERE DAY = DATE_FORMAT( NOW(), '%a' )) AND ( CURTIME() BETWEEN START_TIME AND END_TIME);
==>使用"現在時間(格式:xx:yy:zz)" 來查詢 此時此課該學生要上的課
SELECT CLASS_NAME FROM courses_new JOIN (SELECT CLASS_ID FROM open WHERE T_ID = 1) A
WHERE A.CLASS_ID = courses_new.CLASS_ID;
==>使用 老師的T_ID 來查詢 老師所有開的課程名單
SELECT A.S_ID, DEPARTMENT, STUDENT_NAME FROM student JOIN (SELECT * FROM schedule s WHERE CLASS_ID = 2) A
WHERE A.S_ID = student.S_ID;
==>使用 CLASS_ID 來查詢 修課同學名單
SELECT * FROM sign_new s WHERE S_ID = 496511126 AND ROOM = 'SF648' AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d-') = DATE_FORMAT(NOW(),'%Y-%m-%d-') AND CLASS_ID = 27;
==>判斷此學生 在今天(日期)與CLASS_ID與學號 去判斷是否已簽到過??
SELECT ENTER_TIME FROM sign_new s WHERE DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = CURDATE() AND CLASS_ID = 27;
==>
SELECT DISTINCT DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') FROM sign_new WHERE CLASS_ID = 27 ORDER BY ENTER_TIME
==>回傳該堂課的(今天以前的)上課日期
SELECT DEPARTMENT, S_ID, STUDENT_NAME, DATE_FORMAT(ENTER_TIME,'%T'),IS_SIGN FROM sign_new WHERE CLASS_ID = 27 AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = '2010-11-27' AND IS_SIGN = '已簽到' ORDER BY ENTER_TIME
==>回傳 該堂課該日期 的所有已簽到學生
SELECT * FROM (SELECT A.S_ID, DEPARTMENT, STUDENT_NAME FROM student JOIN (SELECT * FROM schedule s WHERE CLASS_ID = 2) A
WHERE A.S_ID = student.S_ID) B
WHERE B.STUDENT_NAME
NOT IN
(SELECT STUDENT_NAME FROM sign_new WHERE CLASS_ID = 2 AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = '2010-11-27' AND IS_SIGN = '已簽到' ORDER BY ENTER_TIME);
==>該堂課該日期 未到名單 修課名單-已到名單
UPDATE sign_new SET IS_SIGN = '未到' WHERE CLASS_ID = 27 AND S_ID = 496511126 AND DATE_FORMAT(ENTER_TIME,'%Y-%m-%d') = '2010-11-27'
2010年11月26日 星期五
取得 此時此刻的時間 & 星期幾,此時
SELECT DATE_FORMAT( NOW(), '%a' ) , DATE_FORMAT( NOW(), '%H' ) ;
回傳: 星期幾&此時
SELECT NOW();
SELECT CURRENT_TIMESTAMP;
回傳: ex. 2010-11-26 16:44:21
回傳: 星期幾&此時
SELECT NOW();
SELECT CURRENT_TIMESTAMP;
回傳: ex. 2010-11-26 16:44:21
2010年11月19日 星期五
MySQL DATETIME 時間
MySQL Date 函數
下面的表格列出了MySQL 中最重要的內建日期函數:
SQL Date 數據類型
MySQL 使用下列數據類型在數據庫中存儲日期或日期/時間值:- DATE - 格式YYYY-MM-DD
- DATETIME - 格式: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
- YEAR - 格式YYYY 或YY
SQL Server 使用下列數據類型在數據庫中存儲日期或日期/時間值:- DATE - 格式YYYY-MM-DD
- DATETIME - 格式: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式: 唯一的數字
例子 1
下面是SELECT 語句:
SELECT NOW(),CURDATE(),CURTIME()
結果類似:
NOW() CURDATE() CURTIME()
2008-12-29 16:25:46 2008-12-29 16:25:46
如果需要INSERT時,系統自動加入時間,要將DATETIME欄位的default value設為NOW();
但是如果這樣執行時會跳出錯誤訊息,因為MySQL的文件上面有說,default value只能設為常數不能設為function。
"The DEFAULT value clause in a data type specification indicates a default value for a column. With one exception, the default value must be a constant; it cannot be a function or an expression. This means, for example, that you cannot set the default for a date column to be the value of a function such as NOW() or CURRENT_DATE."
後來爬了爬文,有網友提供另一種和DATETIME幾乎類似的方法
->使用TIMESTAMP型態的column,將其default value設定CURRENT_TIMESTAMP。
每次在TABLE裡面新增一筆資料時,系統會自動在該欄位加入目前時間。
這樣在MySQL環境下是可以成功執行的。
訂閱:
文章 (Atom)