|
查看: 1454|回复: 13
|
sql高手来看看。。。
[复制链接]
|
|
|
我有几个data field 叫 status,DateFrom, DateTo
当我做search时, 我有两个concept...
第一:我直接找status
第二:我要找status,DateFrom,DateTo, 这三个field 我都要match 起来。。。例如:status : Pending, DateFrom : 2/8/2008 DateTo: 2/25/2008(这三个都是database 里面的data)
当我在system打 status ending, DateFrom:2/8/2007, DateTo:2/25/2007
那两个date都不能找到data所以data not found嘛。。。
query要怎样写呢?
请各位高手大大帮帮忙~ |
|
|
|
|
|
|
|
|
|
|
发表于 25-2-2008 03:31 AM
|
显示全部楼层
|
好像不是很难。。。你自己的 SQL 是怎么写。。。让大家看看为什么会出错。 |
|
|
|
|
|
|
|
|
|
|
发表于 25-2-2008 09:12 AM
|
显示全部楼层
原帖由 King86 于 25-2-2008 02:18 AM 发表 
我有几个data field 叫 status,DateFrom, DateTo
当我做search时, 我有两个concept...
第一:我直接找status
第二:我要找status,DateFrom,DateTo, 这三个field 我都要match 起来。。。例如:status : Pendin ...
可以试一试这个
*******************
第一:SELECT * FROM TBLXYZ WHERE STATUS = 'PENDING'
第二:SELECT * FROM TBLXYZ WHERE STATUS = 'PENDING' AND DATEFROM >= '2008/2/8' AND DATETO <= '2008/2/25' |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 25-2-2008 06:44 PM
|
显示全部楼层
原帖由 goatstudio 于 25-2-2008 03:31 AM 发表 
好像不是很难。。。你自己的 SQL 是怎么写。。。让大家看看为什么会出错。
SELECT * FROM TBLXYZ WHERE STATUS = 'PENDING' OR
STATUS = 'PENDING' AND DATEFROM >= '2008/2/8' AND DATETO <= '2008/2/25'
我是酱写~ |
|
|
|
|
|
|
|
|
|
|
发表于 25-2-2008 08:37 PM
|
显示全部楼层
|
确认一下 TBLXYZ 有没有这些日期的 record? |
|
|
|
|
|
|
|
|
|
|
发表于 25-2-2008 10:05 PM
|
显示全部楼层
如果你的data type 是datetime,最好filter by:
SELECT * FROM TBLXYZ WHERE STATUS = 'PENDING' AND DATEFROM >= '2008/2/8 00:00:00' AND DATETO <= '2008/2/25 23:59:59'
另外一个比较实用的方法:
SELECT *
FROM TBLXYZ
WHERE STATUS = 'PENDING' AND CONVERT(DATETIME, DateFrom, 103) >='20080208' AND CONVERT(DATETIME, DateTo, 103) <='20080225'
[ 本帖最后由 lonelystar水瓶 于 25-2-2008 11:28 PM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 26-2-2008 01:22 AM
|
显示全部楼层
原帖由 lonelystar水瓶 于 25-2-2008 10:05 PM 发表 
如果你的data type 是datetime,最好filter by:
SELECT * FROM TBLXYZ WHERE STATUS = 'PENDING' AND DATEFROM >= '2008/2/8 00:00:00' AND DATETO ='20080208' AND CONVERT(DATETIME, DateTo, 103)
我会convert date, 只是那个query我搞不清楚~ |
|
|
|
|
|
|
|
|
|
|
发表于 26-2-2008 02:11 AM
|
显示全部楼层
试试看这样写:
SELECT * FROM TBLXYZ WHERE (STATUS = 'PENDING') OR
(STATUS = 'PENDING' AND DATEFROM >= '2008/2/8' AND DATETO <= '2008/2/25')
要确保你的资料库有相关的资料。
[ 本帖最后由 goatstudio 于 26-2-2008 02:12 AM 编辑 ] |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 26-2-2008 05:50 PM
|
显示全部楼层
也是不能,当我search时打pending和date...它出pending而date它都不管是不是在那两个date的之间。。。 |
|
|
|
|
|
|
|
|
|
|
发表于 27-2-2008 08:13 AM
|
显示全部楼层
原帖由 King86 于 26-2-2008 05:50 PM 发表 
也是不能,当我search时打pending和date...它出pending而date它都不管是不是在那两个date的之间。。。
试一试这个
*************
SELECT * FROM TBLXYZ WHERE STATUS = 'PENDING' OR
(DATEFROM BETWEEN '2008/2/8' AND '2008/2/25') AND
(DATETO BETWEEN '2008/2/8' AND '2008/2/25')
[ 本帖最后由 shinchanawang 于 27-2-2008 08:15 AM 编辑 ] |
|
|
|
|
|
|
|
|
|
|
发表于 28-2-2008 02:04 AM
|
显示全部楼层
原帖由 King86 于 26-2-2008 05:50 PM 发表 
也是不能,当我search时打pending和date...它出pending而date它都不管是不是在那两个date的之间。。。
那是因为 SQL 里有无日期皆可。既然是这样,我建议你在 code 里控制 sql.
有输入日期的时候,就用
SELECT * FROM TBLXYZ WHERE (STATUS = 'PENDING' AND DATEFROM >= '2008/2/8' AND DATETO <= '2008/2/25')
没有输入日期的话,就用
SELECT * FROM TBLXYZ WHERE (STATUS = 'PENDING') |
|
|
|
|
|
|
|
|
|
|
发表于 2-3-2008 11:38 PM
|
显示全部楼层
原帖由 lonelystar水瓶 于 25-2-2008 10:05 PM 发表 
如果你的data type 是datetime,最好filter by:
SELECT * FROM TBLXYZ WHERE STATUS = 'PENDING' AND DATEFROM >= '2008/2/8 00:00:00' AND DATETO ='20080208' AND CONVERT(DATETIME, DateTo, 103)
CONVERT(DATETIME, DateTo, 103)
可以问下。。。。
那个103是做什么用的吗?
谢谢 |
|
|
|
|
|
|
|
|
|
|
发表于 2-3-2008 11:40 PM
|
显示全部楼层
知道了。。。谢谢  |
|
|
|
|
|
|
|
|
|
|
发表于 15-3-2008 01:13 PM
|
显示全部楼层
原帖由 小陈陈 于 2-3-2008 11:38 PM 发表 
CONVERT(DATETIME, DateTo, 103)
可以问下。。。。
那个103是做什么用的吗?
谢谢
日期的style of date format
103是dd/mm/yy |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|