By default, SQLite does not provide a way to format DATE
or DATETIME
columns as a two-digit year. Therefore, to SELECT
a two-digit year in SQLite you can do the following:
- Use
strftime()
to get four-digit year from a SQLite date (i.e.YYYY
); - Use
substr()
on the result of the previous step to remove the first two digits from the year.
This would look like the following:
substr(strftime('%Y', date_col), 3, 2)
This would return a substring (of YYYY
) starting from the third character and include a total of two characters. In this way, you can exclude the first two digits of the year in a YYYY-MM-DD
formatted date. To demonstrate this, consider the following table of customers for example:
+----+--------------------+ | id | name | date_birth | +----+--------------------+ | 1 | John | 1978-01-01 | | 2 | Wayne | 2015-08-01 | | 3 | Jane | 2005-08-01 | | 4 | Skye | 1992-12-01 | +----+--------------------+
To SELECT
a two-digit year from the date_birth
column, you would use substr()
and strftime()
in the following way:
SELECT name, substr(strftime('%Y', date_birth), 3, 2) year_birth FROM customer
This would result in the following:
+-------+------------+ | name | year_birth | +-------+------------+ | John | 78 | | Wayne | 15 | | Jane | 05 | | Skye | 92 | +-------+------------+
If you would like to try this example yourself, then you can create the table and insert the data (as shown in the examples above), in the following way:
CREATE TABLE `customer` ( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(25) NOT NULL, date_birth DATE NOT NULL ); INSERT INTO customer(`name`, `date_birth`) VALUES ('John', '1978-01-01'), ('Wayne', '2015-08-01'), ('Jane', '2005-08-01'), ('Skye', '1992-12-01');
This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.