关于sybase ASE 15.5我还有另一个(可能)非常容易回答的问题...不是我的热门话题: - (
我有一个临时表,其中有一个日期列。
使用转换来转换实时数据
,将日期插入到临时表中来自
e.g:
2013-01-21 10:05:00.0
2013-01-28 08:03:00.0
到
21/01/2013
28/01/2013
using (CONVERT(VARCHAR(10), DATEFIELD, 103)
我遇到的问题是当我尝试使用日期范围过滤器从LIVE表中选择数据到临时表时:
WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '21/01/13' AND '28/01/13')
....当我运行此sybase时,只插入21/01/2013日期而不是28/01/2013。
.....此外,如果我使用29/01/2013作为结束日期,即
WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '21/01/13' AND '29/01/13')
我插入了两个:
21/01/2013
28/01/2013
进一步 - 如果我只运行21/01/13,即
WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '21/01/13' AND '21/01/13')
我没有得到任何回报。
有什么想法吗?
也许在sybase中使用BETWEEN并不好。为了清楚起见,字段从DATETIME转换为VARCHAR(10)。
我遇到的另一个问题是,当我有第一部分修复时,我希望能够通过例如通配符。
WHERE (CONVERT(VARCHAR(10), DATEFIELD, 103) BETWEEN '%' AND '%')
....但目前这个也不起作用。
对这两个问题中的任何一个/两个都有任何想法。
提前致谢。
加雷
答案 0 :(得分:1)
嗯,您不需要转换为varchar。我假设你的字段是日期时间。
convert(date, DATEFIELD, 103)
以后你可以: (TST cenario)
create table #temp1 (Datatst datetime)
insert into #temp1 values( '2013-01-21 10:05:00.0')
insert into #temp1 values( '2013-01-28 08:03:00.0')
select Datatst from #temp1
where convert(date,Datatst,103) between '21/Jan/13' AND '28/Jan/13'
Datatst
2013-01-21 10:05:00.0
2013-01-28 08:03:00.0
(我的字符集是cp850)