i从此产生视图:
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;
它为text
类型提供了工作日信息。然后我使用:
select date::date, weekday::varchar from datetoday;
现在桌子就像
2013-3-1 Friday
2013-3-2 Saturday
如果我想选择条目:
select * from datetoday where weekday='Friday'
将其从text
更改为character varying
。
看来固定的长度不是根据每个单词长度的。
例如,"星期五"应该有6个长度和周三的长度9.
我该如何更改此操作,让长度是单词的实际长度?
因为稍后我将将此表的weekday
列与另一个表的weekday
列进行比较。喜欢
where a.weekday=b.weekday
另一个工作日来自JSP的用户,因此长度有所不同。
现在的长度已固定,比较失败。
模式 'Day'
在右侧空白,使整个9个字符长。使用 FM
模板模式修饰符删除任何填充:
SELECT d::date AS day
, to_char(d, 'yyyy-mm-dd') AS day_text
, to_char(d, 'FMDay') AS weekday
FROM generate_series('2013-03-01'::date
, '2013-03-07'::date
, interval '1 day') d;
还为时间戳演示generate_series()
。一个较少的查询级别。
如果在视图中需要实际的date
,请将其作为实际类型date
,请勿转换为text
,然后将其返回。
并且不要将基本类型名称date
用作列名。改用day
。
我只会使用text
进行文本。转换为varchar
的没有意义。