在SQL中:根据日期之前或之后添加一列?

时间:2016-12-28 22:07:29

标签: sql oracle

在Oracle SQL Developer中,如何基于我的日期列是否具有2010年1月1日之前或之后的值来添加列?

例如:

Date
---------
01-JAN-10
01-JUL-15
07-JAN-07 

我希望看到这样:

Date        on_time
--------------------
01-JAN-10      N
01-JUL-15      Y
07-JAN-07      N

其中N表示该值等于或晚于:2010年1月1日

Y表示该值在2010年1月1日之前。

这甚至可以吗?我以前没有在SQL中添加新列。

3 个答案:

答案 0 :(得分:3)

您可以使用CASE语句:

SELECT your_date, 
CASE WHEN your_date > '2010-01-01' THEN 'Y' ELSE 'N'  END "on_time"
FROM your_table

它会检查日期是否大于2010-01-01,然后会打印Y否则会打印N

答案 1 :(得分:2)

您可以根据日期列使用Case声明 例如:

CASE WHEN [your date column] > '01-JAN-10' THEN 'N'
ELSE 'Y'
END

当然要确保使用PL / SQL to_date函数进行字符串转换

答案 2 :(得分:1)

您可以使用虚拟列:

alter table <table_name>
add (<column_name> [<data_type>] [generated always] as (<column_expression>) [virtual]);

因此,您可以使用case函数生成列:

CASE WHEN Date > to_date('2010-01-01', 'yyyy-mm-dd') THEN 'Y' ELSE 'N' END