作者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)
1F:推 fphoenix923:第三种写法的效能会很差,没办法使用Index 06/08 20:41
2F:推 daniel1205:where convert(varchar,addtime,111) = '2008/05/06' 06/09 00:23
3F:推 ysyc:感谢~查询到了 很奇怪的是只有第三种写法查得到 实在不解@@ 06/09 02:07
4F:推 ysyc:说错了 是第四种 06/09 02:12