如何替换 SQL 中的日期值?
How to replace date value in SQL?
我正在使用 Oracle 并尝试创建一个视图,我将在其中将一个日期值替换为另一个日期值。我正在尝试使用 case when
语句,但是,我需要使用相同的列名作为别名,并且我得到了我有重复列名的错误。您知道如何修复它或提出替换列中的日期值和创建视图的替代方法吗?我需要保持原来的 table 不变。
代码:
create view name_of_view as
select t.*,
(case when birth_date = to_date('4.12.2015', 'DD.MM.YYYY')
then to_date('4.12.1950', 'DD.MM.YYYY')
else birth_date end) as birth_date
from table t;
正如 @Lukasz Szozda
在评论中建议的那样,当您尝试 t.*
时,它将检索 table 中的所有列,包括 birth_date
。
因此,当您添加另一个 birth_date
作为 case when
的一部分时,您会收到重复的列名错误。
您需要做的是:
- 您可以将
case when
列名称更改为:birth_date_new
或其他名称,然后您将同时拥有这两列。
- 您按名称检索所有列,并且在检索
birth_date
时应用 case when
.
我正在使用 Oracle 并尝试创建一个视图,我将在其中将一个日期值替换为另一个日期值。我正在尝试使用 case when
语句,但是,我需要使用相同的列名作为别名,并且我得到了我有重复列名的错误。您知道如何修复它或提出替换列中的日期值和创建视图的替代方法吗?我需要保持原来的 table 不变。
代码:
create view name_of_view as
select t.*,
(case when birth_date = to_date('4.12.2015', 'DD.MM.YYYY')
then to_date('4.12.1950', 'DD.MM.YYYY')
else birth_date end) as birth_date
from table t;
正如 @Lukasz Szozda
在评论中建议的那样,当您尝试 t.*
时,它将检索 table 中的所有列,包括 birth_date
。
因此,当您添加另一个 birth_date
作为 case when
的一部分时,您会收到重复的列名错误。
您需要做的是:
- 您可以将
case when
列名称更改为:birth_date_new
或其他名称,然后您将同时拥有这两列。 - 您按名称检索所有列,并且在检索
birth_date
时应用case when
.