rakutoネット
お問合せ 免責事項 Q&A 掲示板 サイト管理 リンク サイトマップ
HOME > SQLiteでの年齢計算

SQLiteでの年齢計算


年齢の計算

生年月日から年齢を計算する簡単な計算式
(今日の日付-誕生日)/10000の小数点以下切捨て。
上記の有名な計算方法があるそうです。
(20070301 - 19920229)/10000
全然知らない&考え付きませんでした。
とにかく単位を統一して計算できるようにと考えていました……。
年月日での計算なので閏日とか全然関係ないのですねorz

以下はユリウス通日を用いた方法です。
ユリウス通日を取得できるjulianday()関数を使います。
閏年を考慮して365日*4に閏日の1を足して計算しています。
age = (now - birthday) / (365 * 4 + 1) * 4

/* SQLiteの場合 */
SELECT
    ((julianday('now') - julianday(date)) * 0.00273785) 
FROM 
    birthday; 
 
 
/* MySQLの場合 */
SELECT
    YEAR(DATE_SUB(now(),INTERVAL to_days(date) DAY)) 
FROM 
    birthday; 
 
 
/* PostgreSQLの場合 */
SELECT
    age(date) 
FROM 
    birthday;


誕生日データを入力する

idとdate(日付)のシンプルなテーブルを作成します。

型を指定していますがSQLiteでは文字列として扱われます。

CREATE TABLE birthday (
    id          INTEGER NOT NULL,
    date        DATE,
    PRIMARY KEY (id)
);
 
INSERT INTO birthday (date) VALUES (date('now', '-12 years'));
INSERT INTO birthday (date) VALUES (date('now', '-21 years'));
INSERT INTO birthday (date) VALUES (date('now', '-7 years'));
INSERT INTO birthday (date) VALUES (date('now', '-29 years'));
INSERT INTO birthday (date) VALUES (date('now', '-40 years'));
INSERT INTO birthday (date) VALUES (date('now', '-35 years'));
INSERT INTO birthday (date) VALUES (date('now', '-68 years'));
 
INSERT INTO birthday (date) VALUES (date('now', '-12 years', '1 days'));
INSERT INTO birthday (date) VALUES (date('now', '-21 years', '1 days'));
INSERT INTO birthday (date) VALUES (date('now', '-7 years', '1 days'));
INSERT INTO birthday (date) VALUES (date('now', '-29 years', '1 days'));
INSERT INTO birthday (date) VALUES (date('now', '-40 years', '1 days'));
INSERT INTO birthday (date) VALUES (date('now', '-35 years', '1 days'));
INSERT INTO birthday (date) VALUES (date('now', '-68 years', '1 days'));

CID 項目名 型名 NOT NULL 初期値 キー
0 id INTEGER not null PRIMARY
1 date DATE

誕生日を元に年齢を出力

以下にあるSQL文を実行します。
SELECT 
    id, 
    date, 
    ((julianday('now') - julianday(date)) * 0.00273785) age 
FROM 
    birthday;

id date age
1 1994-09-06 12.0018926903606
2 1985-09-06 21.0012056403606
3 1999-09-06 7.00257859036057
4 1977-09-06 29.0012033403606
5 1966-09-06 40.0018846403606
6 1971-09-06 35.0025705408552
7 1938-09-06 68.0018765908552
8 1994-09-07 11.9992084323293
9 1985-09-07 20.998521382824
10 1999-09-07 6.99989433282399
11 1977-09-07 28.998519082824
12 1966-09-07 39.999200382824
13 1971-09-07 34.999886282824
14 1938-09-07 67.9991923333187



<<SQLiteでの日付関数
SQLite Tips SQLiteでのalter>>

PHPリング

@PHP.ring Home
<5 <1 Random List 1> 5>

rktSQLite

  • sourceforge.jp

広告


アマゾン検索

サーチ:
Amazon.co.jpアソシエイト

カテゴリ

  •  Templateエンジンのすすめ Templateエンジンのすすめ
  •  SQLiteをやってみよう SQLiteをやってみよう
  •  SQLite SQLコマンド一覧 SQLiteコマンド一覧
  •  SQLite 管理プログラムSQLite 管理
  •  はじめてのEclipse はじめてのEclipse
  •  PHP SQLiteのTIPS PHP SQLiteのTIPS
  •  サンプル サンプル/ダウンロード
  •  リンク リンク
  •  掲示板 掲示板

メニュー

  •  SQLiteのシーケンス設定
  •  SQLiteでの外部結合
  •  SQLiteでの日付データ
  •  SQLiteでの日付関数
  •  SQLiteでの年齢計算
  •  SQLiteでのalter

キーワード検索

キーワード



最近のTB

  •  2006/03/13さくらのブログに挑戦[rakutoネットブログ]
  •  2006/01/20レーザーチャートの作成方法[脳内研究所]

Summary

  •     ATOM(XML)
  •     RDF(XML)
  •     RSS0.92(XML)
  •     RSS2.0(XML)

Powered by

  •     PHP
  •     Smarty
  •     SQLite
  •     MySQL
Copyright (C) 2005 `rakuto.net' All Rights Reserved.