SQLでの年齢算出方法

解決


サウザー  2008-06-18 20:53:12  No: 31016

BDEのローカルSQLで、
システム日付から年齢を算出する方法を教えてください。
いろいろ試してみましたが、機能は使用できませんと怒られます。


Ru  2008-06-18 23:45:17  No: 31017

何をしてエラーでたか知りたいけどなぁ。
サウザーさんの環境で下記の関数が使えるかな?
とりあえず参考までに。
YEAR(CURRENT DATE - DATE('1995-01-01'))

年齢計算したことないので,
うるう年等の年齢算出にあたり注意点などは把握してないので
不備はあると思います。


サウザー  2008-06-19 02:37:28  No: 31018

Ru様

ご回答ありがとうございます。

>>YEAR(CURRENT DATE - DATE('1995-01-01'))

delphi3のdatabase explorerで試してみましたが、残念ながら
「YEAR(CURRENT」のところでキーワード無効のエラーがでます。
データはdbase4です。

私が試したことは、
Age(生年月日)、
DATEDIFF(YEAR,生年月日,システム日付)、
TRUNC(MONTHS_BETWEEN(システム日付,生年月日)/12)です。
いずれも「その機能は使用できません」というエラーメッセージがでました。

システム日付は「CURRENT DATE」で記載すればいいのでしょうか?
関数一覧とか資料があればよかったのですが、未だ発見できずです。

できればパラメータ等は使わずに、SQLだけで年齢算出したいのですが、
ご教授いただけると助かります。よろしくお願いします。


igy  2008-06-19 05:50:49  No: 31019

>関数一覧とか資料があればよかったのですが、未だ発見できずです。

Delphi5ですが、
C:\Program Files\Common Files\Borland Shared\BDE にある
ローカルSQLガイド(LOCALSQL.HLP)の関数一覧ページ
によると、

>ローカル SQL は,以下のデータ操作言語(DML)関数をサポートします。
>
>文字列関数      解説
>----------------------------------------------
>結合関数        2 つの文字列を結合します。
>LOWER           文字列を小文字に変換します。
>UPPER           文字列を大文字に変換します。
>SUBSTRING       1 つの文字列から,その一部を取り出します。
>TRIM            文字列の左端,右端,または両端から特定の重複文字を削除します。
>
>集合関数        解説
>----------------------------------------------
>AVG             1 つの列から,NULL 値以外のすべての数値の平均を求めます。
>COUNT          結果セットの行数を求めます。
>MAX            列の最大値を求めます。
>MIN            列の最小値を求めます。
>SUM            列の全数値を合計します。
>
>データ型関数    関数
>----------------------------------------------
>CAST           あるデータ型を別のデータ型に変換します。
>EXTRACT        日付から年,月,日をそれぞれ表すフィールドを抽出します。

だそうです。


通りがかり  2008-06-19 10:13:56  No: 31020

年齢を求めるSQLは知らないけど逆の発想で...

SQLを発行する前に、先に年齢から生年月日の範囲を求めて
それを、betweenで条件にしたらだめなんだろうか?
(例:30歳  1978-04-01 〜 1979-03-31)


サウザー  2008-06-19 19:59:21  No: 31021

igy様
通りがかり様

Delphi3のBDEにもローカルSQLのヘルプがありました。
内容的にはかなりショックです。
やはり、SQLでシステム日付を取得することはできないのですね。

ソース的には通りがかり様の
おっしゃられている方法で解決しました。

皆様、どうもありがとうございました。


HOta  2008-06-20 00:18:20  No: 31022

計算項目にすればどうでしょう。
これなら、Delphi側で計算できます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加