Lab 16: Date and Time Functions
Overview
Step 1: Setup
docker run -d --name mysql-lab -e MYSQL_ROOT_PASSWORD=rootpass mysql:8.0
for i in $(seq 1 30); do docker exec mysql-lab mysql -uroot -prootpass -e "SELECT 1" 2>/dev/null && break || sleep 2; done
docker run -d --name pg-lab -e POSTGRES_PASSWORD=rootpass postgres:15
sleep 10
docker exec mysql-lab mysql -uroot -prootpass << 'EOF'
CREATE DATABASE datelab;
USE datelab;
CREATE TABLE events (
event_id INT NOT NULL AUTO_INCREMENT,
event_name VARCHAR(100) NOT NULL,
start_date DATE NOT NULL,
start_time TIME,
start_ts TIMESTAMP,
end_date DATE,
category VARCHAR(30),
PRIMARY KEY (event_id)
);
INSERT INTO events (event_name, start_date, start_time, start_ts, end_date, category) VALUES
('Product Launch', '2024-01-15', '09:00:00', '2024-01-15 09:00:00', '2024-01-16', 'Marketing'),
('Team Offsite', '2024-02-20', '08:30:00', '2024-02-20 08:30:00', '2024-02-22', 'HR'),
('Quarterly Review', '2024-03-31', '14:00:00', '2024-03-31 14:00:00', '2024-03-31', 'Finance'),
('Tech Conference', '2024-06-10', '09:00:00', '2024-06-10 09:00:00', '2024-06-12', 'Engineering'),
('Annual Summit', '2024-09-15', '10:00:00', '2024-09-15 10:00:00', '2024-09-17', 'Executive'),
('Year-End Review', '2024-12-15', '14:00:00', '2024-12-15 14:00:00', '2024-12-15', 'Finance'),
('Sprint Planning', '2023-11-01', '10:00:00', '2023-11-01 10:00:00', '2023-11-01', 'Engineering'),
('Budget Planning', '2023-10-15', '09:00:00', '2023-10-15 09:00:00', '2023-10-17', 'Finance');
EOFStep 2: NOW() and CURRENT_TIMESTAMP
Step 3: DATE_FORMAT (MySQL) and TO_CHAR (PostgreSQL)
Step 4: DATEDIFF (MySQL) and AGE (PostgreSQL)
Step 5: EXTRACT — Get Date Parts
Step 6: DATE_ADD (MySQL) and Interval Arithmetic (PostgreSQL)
Step 7: DATE_TRUNC (PostgreSQL)
Step 8: Capstone — Events Report with Date Intelligence
Summary
Function
MySQL
PostgreSQL
Notes
Last updated
