如題目,資料表有開始日期及結束日期
問題是說
當我得到某一個日期時
要如何找到是否存在某一筆資料的開始日期與結束日期之中
表單a
編號 | id | 開始日期 | 結束日期
1 | n01 | 2012/3/1 | 2012/4/18
2 | n02 | 2012/3/15 | 2012/3/18
3 | n03 | 2012/4/17 | 2012/5/1
得到 2012/3/16
select id from 表單a where ...??(如何下..?)
結果為
id
n01
n02
<pre class="c" name="code">
用MySQL來實際操作一下.
CREATE TABLE ithelp0323 (
no INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
id CHAR(3) NOT NULL,
start_date DATE NOT NULL,
end_date DATE NOT NULL);
INSERT INTO ithelp0323(id, start_date, end_date) VALUES
('n01', '2012/3/1', '2012/4/18'),
('n02', '2012/3/15', '2012/3/18'),
('n03', '2012/4/17', '2012/5/1');
SELECT id
FROM ithelp0323
WHERE STR_TO_DATE('2012/3/16', '%Y/%m/%d') >= start_date
AND STR_TO_DATE('2012/3/16', '%Y/%m/%d') <= end_date;
+-----+
| id |
+-----+
| n01 |
| n02 |
+-----+
這一看就知道大概是學校出的功課...
我剛入門
目前正在試寫一個網頁
之前沒有很鑽研SQL語法
才來這提問
而且我不知道日期也可以拿來比較 !! Orz
現在知道了~
日期的計算原理在資料庫中,並不是很難..
當你在劃面上輸入yyyy/mm/dd HH:MM:SS時,資料庫裡,並非是做你所見的格式一樣的資料,而是一個整數的數字,數字有多大,我沒有記,你可以自己去查一下SQL的說明。
MS SQL 在2005之前,是沒有 Date這個資料型態的,只有DateTime這個資料型態,資料應該是從1753/01/01 00:00:00開始計算,一直到9999/12/31 23:59:59,這些在資料庫裡,都會被轉換成一個整數的數字,因此,在運算過程是可以拿來做比較、運算的。
在MS SQL裡,DateTime的這個起算點【1753/01/01 00:00:00】,是一個有趣的年份,有興趣的人,可以去查一下為什麼要用1753年,而不用其他的年份。
ru035pu4xx兄,希望這些對你有幫助。
以上的規則一樣適用於其他的資料庫(起算點可能有所不同),不管在比較、運算、觀念的使用上,皆同,有些甚至就函數名稱皆一樣(不曉得算不算抄襲)...