看板 Database 關於我們 聯絡資訊
※ 引述《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