首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

六條實用 MySQL SQL 技巧:年齡計算、時間差、去重、工作日、主鍵查詢、庫大小統計

     編輯:MySQL 資料庫相關知識

1. 根據生日計算年齡

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW()) - TO_DAYS(@dateofbirth)), '%Y') + 0;

利用天數差轉年份,+0 強制數值型輸出。

2. 兩個 DATETIME 差值(秒/分/時/天)

UNIX_TIMESTAMP(dt2) - UNIX_TIMESTAMP(dt1)  -- 秒差
-- 分鐘:/60  小時:/3600  天數:/86400

3. 查詢某列出現恰好 N 次的值

SELECT id FROM tbl GROUP BY id HAVING COUNT(*) = N;

4. 計算兩日期間的工作日(排除週末與假期)

SELECT COUNT(*) FROM calendar
WHERE d BETWEEN @Start AND @Stop
  AND DAYOFWEEK(d) NOT IN (1,7)  -- 1=週日, 7=週六
  AND holiday = 0;

需預建 calendar 表含日期、是否假期欄位。

5. 查詢表的主鍵欄位名

SELECT k.column_name
FROM information_schema.table_constraints t
JOIN information_schema.key_column_usage k
  USING (constraint_name, table_schema, table_name)
WHERE t.constraint_type = 'PRIMARY KEY'
  AND t.table_schema = 'db_name'
  AND t.table_name = 'tbl_name';

6. 統計各數據庫大小(MB)與剩餘空間

SELECT
  table_schema AS 'Db Name',
  ROUND(SUM(data_length + index_length) / 1024 / 1024, 3) AS 'Db Size (MB)',
  ROUND(SUM(data_free) / 1024 / 1024, 3) AS 'Free Space (MB)'
FROM information_schema.tables
GROUP BY table_schema;

更多 MySQL 技巧請參考:MySQL 專題文章列表

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved