我正在尝试比较要在条件中使用的“text”类型的一些字符。但是,它们不匹配,也不显示为真。
这是我正在使用的postgresql数据库...例如:
active_date timestamp := '2020-10-4';
day_of_week text := to_char(active_date, 'day');接受输入的任何日期,并将其存储到day_of_week中,在本例中,选择day_of_week将在结果中返回'sunday‘。
但是,当尝试在某个条件下使用它时,
(case
when day_of_week = 'sunday' then 'True' else 'False' end
) as "true or false",..。总是返回'false‘。
我猜这是由数据类型引起的问题?需要采取什么措施才能使案例评估为真?我试过cast('sunday' as text)
还是什么都没有
发布于 2020-10-26 05:13:39
默认情况下,to_char()会将值与空格“对齐”。如果您不想这样做,可以使用FM modifier
to_char(active_date, 'FMday'))
FM禁止使用前导零和尾随空格,否则将添加这些空格以使模式的输出为固定宽度
通常,我建议不要使用本地化的日期名称,因为如果从具有不同语言环境的SQL客户机运行SQL,这很容易破坏您的代码。如果您想使其更健壮,可以使用extract(dow from your_date_value)和Sunday =0和Saturday = 6。就我个人而言,我更喜欢使用isodow可以提取的ISO工作日,其中Monday =1和Sunday =7
发布于 2020-10-26 04:26:55
解决方案是:
rtrim(to_char(active_date, 'day'))https://stackoverflow.com/questions/64528366
复制相似问题