I am trying to create a query that gets only the year from selected dates. I.e. select ASOFDATE from PSASOFDATE;
returns 11/15/2012
, but I want only 2012
. How can I get only the year? I know the YEAR
function can be used, but I'm not sure how.
Asked
Active
Viewed 2e+01k times
15
-
4The question was retagged from [tag:mysql] to [tag:oracle]. This introduced quite a bit of confusion in this Q&A. Knowing this, the answers are a lot less surprising. – Palec Oct 15 '16 at 14:59
-
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm – prashanth Dec 17 '18 at 09:10
-
@Palec If I recall right... at that time, there was also a confirmation OP being a puppet account... – bonCodigo Jun 26 '20 at 14:54
5 Answers
26
How about this one?
SELECT TO_CHAR(ASOFDATE, 'YYYY') FROM PSASOFDATE
-
1
-
@Juan I agree with you Juan. Good answer. Totally OK to use a string when you consistently use a 4 digit year. If you add the day and/or month and you want to SORT, sort by the date column itself or by a to_char string with the 'YYYY/MM/DD' or similar format to get the correct order. – Mark Jan 09 '20 at 17:13
4
just pass the columnName as parameter of YEAR
SELECT YEAR(ASOFDATE) from PSASOFDATE;
another is to use DATE_FORMAT
SELECT DATE_FORMAT(ASOFDATE, '%Y') from PSASOFDATE;
UPDATE 1
I bet the value is varchar with the format MM/dd/YYYY, it that's the case,
SELECT YEAR(STR_TO_DATE('11/15/2012', '%m/%d/%Y'));
LAST RESORT if all the queries fail
use SUBSTRING
SELECT SUBSTRING('11/15/2012', 7, 4)

John Woo
- 258,903
- 69
- 498
- 492
-
-
1
-
it displayed the same error for the second query. I am not sure what the data type is..let me try to pull it up.. – John Doe Nov 19 '12 at 14:10
-
-
@StackOver see my updated answer, the format of your date is `M/d/Y` right? try converting it back to date. – John Woo Nov 19 '12 at 14:17
-
1This answer is MySQL only. After the retag to [tag:oracle], this one is completely invalid. I suggest adding a warning to the top of this answer. – Palec Oct 15 '16 at 15:03
3
SELECT date_column_name FROM table_name WHERE EXTRACT(YEAR FROM date_column_name) = 2020

Siddharth Sonwane
- 41
- 1
- 5
-2
Edit: due to post-tag 'oracle', the first two queries become irrelevant, leaving 3rd query for oracle.
For MySQL:
SELECT YEAR(ASOFDATE) FROM PASOFDATE
Editted: In anycase if your date is a String, let's convert it into a proper date format. And select the year out of it.
SELECT YEAR(STR_TO_DATE(ASOFDATE, '%d-%b-%Y')) FROM PSASOFDATE
Since you are trying Toad, can you check the following code:
For Oracle:
SELECT EXTRACT (TO_DATE(YEAR, 'MM/DD/YY') FROM ASOFDATE) FROM PSASOFDATE;

bonCodigo
- 14,268
- 1
- 48
- 91
-
For you to get a better understanding on [date, time related manupulations](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html), please take a look at this link as well. Hope that helps in the long run :) – bonCodigo Nov 19 '12 at 14:10
-
That's because i misspelled your table name I guess... can you try the `DATE(date column)` and your proper column name and table name :) – bonCodigo Nov 19 '12 at 14:12
-
-
Sorry, I got disconnected. It seems you have voted for John Woo's answer. So did it work for you? Frankly, it's important to dig into the issue you are getting. I am more curious to know if you are still getting the error if not which answer solved that issue and got you the correct results. – bonCodigo Nov 19 '12 at 14:30
-
I didn't vote for anyones. Im pretty sure all of your answers are correct, but I don't know why it won't work. I'm using Peoplesoft and Toad as the SQL interface... – John Doe Nov 19 '12 at 14:35
-
I was referring to votes, coz I had the impression his answers solved your issue. Anyway, you may want to use `CAST` and `EXTRACT` if it's TOAD. [CAST, EXTRACT](http://www.toadworld.com/KNOWLEDGE/KnowledgeXpertforOracle/tabid/648/TopicID/CAEF/Default.aspx) – bonCodigo Nov 19 '12 at 14:44
-
-
Did you try the above extract code? I have updated to convert the string to Date and then use EXTRACT to get the year out. And if it works please let us know. – bonCodigo Nov 19 '12 at 15:07
-
I am glad. So you do not actually need CAST to be used. However I have updated the answer to convert your date into DATE. That also says you are using TOAD SQL which is more of the Oracle PL/SQL decendent type. Not MYSQL :) The invalid identifier was due to the fact we used wrong language keywords/syntaxes in your TOAD query. – bonCodigo Nov 19 '12 at 15:11
-
6The first two queries are for MySQL, the third one is for Oracle. Since the question is tagged [tag:oracle], this is fairly misleading and should be explicitly stated in the question. – Palec Oct 15 '16 at 14:36