Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从to_char()输出中删除空白填充_Sql_Postgresql_Database Design_Date Format_Generate Series - Fatal编程技术网

Sql 从to_char()输出中删除空白填充

Sql 从to_char()输出中删除空白填充,sql,postgresql,database-design,date-format,generate-series,Sql,Postgresql,Database Design,Date Format,Generate Series,我从以下内容生成一个视图: 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; 它将工作日信

我从以下内容生成一个视图:

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
type提供给我。然后我使用:

select date::date, weekday::varchar from datetoday;
现在桌子就像

2013-3-1 Friday
2013-3-2 Saturday
如果要选择条目:

select * from datetoday where weekday='Friday'
将其从
文本
更改为
字符变化

似乎长度是固定的,而不是根据每个单词的长度。
例如,“星期五”的长度应为6,星期三的长度应为9。
我如何改变这个,让长度成为单词的实际长度

因为稍后我会将此表的
weekday
列与另一个表的
weekday
列进行比较。像

where a.weekday=b.weekday
另一个工作日来自jsp的用户,因此长度不同。

现在长度已固定,比较失败。

模式
'Day'
右侧填充为空白,使所有天都有9个字符长。使用删除任何填充:

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;
选择d::日期作为日期
,将字符(d,'yyyy-mm-dd')作为日期文本
,以_char(d,'FMDay')作为工作日
从生成_系列('2013-03-01'::日期
,“2013-03-07”::日期
,间隔为“1天”)d
也在演示。少一个查询级别。
如果您需要视图中的实际日期,请将其设置为实际类型,不要转换为文本 并且不要使用基本类型名
date
作为列名。改用
day


我会用
text
作为文本。转换为
varchar

没有意义这没有多大意义。你能显示完整的SQL和它的输出吗?为什么不使用SELECT EXTRACT(从时间戳dt中提取DOW)而不是to_char(dt,'Day')。这将为您提供一周中的日期编号(0-6;星期日为0)。然后你可以比较。另一个表是工作日信息,比如星期一,而不是数字。