我在PostgreSQL中有一个这样的表:姓名|道布
ABC|‘2011-03-03’XYZ|‘2009-01-01’
我应该使用什么查询来获取以下格式的输出数据(仅年份而不是日期),我还想检索仅大于2010年的数据:
姓名|道布
ABC|‘2011’
ycl3bljg1#
道布使用to_char格式化。
to_char
select "Name", to_char(DOB, 'yyyy') DOB from the_table where extract('year' from DOB) > 2010;
如果道布是字符类型而不是date类型,则必须首先将其转换为date:
date
select "Name", to_char(DOB::date, 'yyyy') DOB from the_table where extract('year' from DOB::date) > 2010;
如果以文本表示的日期具有“月/日/年”格式,则使用to_date将其转换为date。
to_date
select "Name", to_char(to_date(DOB, 'mm/dd/yyyy'), 'yyyy') DOB from the_table where extract('year' from to_date(DOB, 'mm/dd/yyyy')) > 2010;
不相关但不将日期存储为格式化文本。您的数据类型为date。
1条答案
按热度按时间ycl3bljg1#
道布使用
to_char
格式化。如果道布是字符类型而不是
date
类型,则必须首先将其转换为date
:如果以文本表示的日期具有“月/日/年”格式,则使用
to_date
将其转换为date
。不相关但不将日期存储为格式化文本。您的数据类型为
date
。