标题:请问一个日期格式的问题,关于filt()和select SQL的
只看楼主
潇洒人间一剑仙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:140
专家分:48
注 册:2008-9-19
结帖率:83.33%
 问题点数:0 回复次数:8 
请问一个日期格式的问题,关于filt()和select SQL的
我通过searchform对某个表用了set filt命令,然后用filt()把这个条件取出来.我想把它用到后面的select SQL语句里.象这样:
filt1=filt("mytable")
select mytable.*.......where &filt1.
一般情况下没问题,可是只要filt1里面包括日期,就会出错提示日期格式不对.可是这个日期条件在前面的set filt命令里能正常使用的.
是不是有个set dateformat之类的命令,该怎么用呢?
初次发帖,请指教,谢谢.
搜索更多相关主题的帖子: SQL filt select 格式 
2008-09-19 00:40
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
一般不会出现问题。具体来讲,你的条件是什么呢

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-09-19 08:59
潇洒人间一剑仙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:140
专家分:48
注 册:2008-9-19
得分:0 
在searchform里自动生成的条件
比如字段里选"日期",运算符里选between,实例框里输入,^2008-09-01,^2008-09-05
这个条件确实起作用了,用filt()查,得到的是between(日期,{09/01/2008},{09/04/2008}),这个条件在set filt 语句里可以用,在select SQL里面直接放在where后面就不能用.语法错误.
上述是不是因为select SQL要用"日期 between {^2008-09-01} and {^2008-09-05}"这种写法?按说都是个逻辑表达式,应该通用的啊.
另外一个就是上面的日期格式,是不一样的,就算是日期={09/01/2008}这样,select SQL也不认这种日期格式,怎么办?谢谢了.

[[it] 本帖最后由 潇洒人间一剑仙 于 2008-9-19 09:33 编辑 [/it]]
2008-09-19 09:25
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
估计就是你的日期写法出现了问题。用date(2008,9,1)或{^2008-09-01}代替不严格的日期写法,可以避免可能存在的问题。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-09-19 11:00
潇洒人间一剑仙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:140
专家分:48
注 册:2008-9-19
得分:0 
我知道是日期格式不兼容
我的问题在于这个日期格式不是我写的,而是searchform类自动生成的,我在前面已经说了,我填写的时候,用的就是{^2008-09-01}这样的格式,但是searchform类把他自动转换成了{09/01/20008}这种格式,而我需要在运行select SQL时调用那个过滤条件,就是filt("mytable")生成的那个字符串,我是没办法对它进行日期格式转换的.
我想要的是解决的办法.谢谢.
2008-09-19 11:26
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
得分:0 
set strictdate to 0
这个设置不知道能不能排除你的问题。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-09-19 11:43
潇洒人间一剑仙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:140
专家分:48
注 册:2008-9-19
得分:0 
谢谢,我去试试
2008-09-19 11:46
ibmlang_002
Rank: 5Rank: 5
来 自:浙江-嘉兴
等 级:贵宾
威 望:18
帖 子:437
专家分:176
注 册:2008-8-30
得分:0 
实在不行就在select命令前加一条set date命令,select 结束后在加一条set date 命令。另,SELECT中BETWEEN命令形如BETWEEN(日期字段,CTOT("2008/1/2"),CTOT("2008/1/3")),该命令中的日期格式要与你目前使用的日期格式一样。你比较一下filt1的内容就知道了。CTOT也可用CTOD替代。

[[it] 本帖最后由 ibmlang_002 于 2008-9-19 12:13 编辑 [/it]]

VFP
2008-09-19 12:08
潇洒人间一剑仙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:140
专家分:48
注 册:2008-9-19
得分:0 
非常感谢两位版主的意见,问题已经完美解决了,两位的意见都是必需的.
set date to ymd
set mark to "-"
set strickdate to 0
这样就可以直接在select SQL 语句里调用filt()的条件了.
而且对searchform类也生效,在条件框里可以更直观地输入2008-09-01,不需要脱字符^了。
2008-09-19 17:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-233928-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.146036 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved