我从这里生成一个视图:
create or replace view datetoday as select to_char(dt,'yyyy-mm-dd') as date,to_char(dt,'Day') as weekday from (select ('2013-03-01'::date + i) dt from generate_series(0,'2013-03-03'::date - 2013-03-01'::date) as t(i)) as t;
它为工作日信息提供了文本类型.然后我用:
select date::date,weekday::varchar from datetoday;
现在桌子就像
2013-3-1 Friday 2013-3-2 Saturday
如果我想选择条目:
select * from datetoday where weekday='Friday'
将其从文本更改为字符.
似乎长度固定不是根据每个字长.
例如,“星期五”的长度应为6,星期三的长度应为9.
我怎样才能改变这个,让长度成为单词的实际长度?
因为稍后我会将此表的工作日列与另一个表的工作日列进行比较.喜欢
where a.weekday=b.weekday
另一个工作日来自jsp的用户,所以长度不同.
现在长度是固定的,比较失败了.
解决方法
“Day”模式在空白处填充,使得所有日子都长达9个字符.使用
FM
Template Pattern Modifier删除任何填充:
SELECT d::date AS day,to_char(d,'yyyy-mm-dd') AS day_text,'FMDay') AS weekday FROM generate_series('2013-03-01'::date,'2013-03-07'::date,interval '1 day') d;
还演示了generate_series()
for timestamps.少了一个查询级别.如果您需要视图中的实际日期,请将其设为实际类型日期,不要转换为文本并返回.并且不要使用基本类型名称日期作为列名称.用日来代替.我只会使用文本文本.转换为varchar没有意义.