作者Antzzz (減肥中請勿餵食)
看板Database
標題Re: [SQL ] 撈時間資料問題
時間Mon Jun 8 19:59:42 2009
※ 引述《ysyc (何苦)》之銘言:
: 就是select時間的問題
: 我想從資料表中找出在某一段時間內新增的資料
: 語法是
: select * from member
: where addtime= #2008/05/06#
: 查詢結果會出現靠近"#"的地方語法錯誤
: 但是書上是這麼寫的啊...@@
: 還是說時間的查詢有其他的格式呢??
: 資料表上那ㄧ個欄位是預設getdate
: 我用的是SQL2008
: 學習中不太熟練 感謝~
時間格式的比較寫法,不同的資料庫會不大一樣
SQL2008應該和SQL2000差不多
我所知道的寫法:
1. select * from member where convert(nvarchar(20), addtime, 112) = '20080506'
--convert最後一個參數style
--請參見
http://technet.microsoft.com/zh-tw/library/ms187928.aspx
2. select * from member where datediff(day, '2008/05/06', addtime) = 0
--我最常用的寫法,可是好像很多人不喜歡
3.select * from member
where year(addtime) = 2008
and month(addtime) = 5
and day(addtime) = 6
4.select * from member
where addtime >= '2008/05/06' and addtime < '2008/05/07'
另外還有between的寫法,看起來很漂亮可是不實用
不知道2008有沒有什麼新寫法(舊寫法已經夠多種了orzs)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.54.145
※ 編輯: Antzzz 來自: 59.120.54.145 (06/08 20:00)
推 fphoenix923:第三種寫法的效能會很差,沒辦法使用Index 06/08 20:41
推 daniel1205:where convert(varchar,addtime,111) = '2008/05/06' 06/09 00:23
推 ysyc:感謝~查詢到了 很奇怪的是只有第三種寫法查得到 實在不解@@ 06/09 02:07
推 ysyc:說錯了 是第四種 06/09 02:12