Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengira Umur dari Tarikh Lahir Menggunakan getDate() SQL?

Bagaimana untuk Mengira Umur dari Tarikh Lahir Menggunakan getDate() SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-22 13:47:12468semak imbas

How to Calculate Age from Date of Birth Using SQL's getDate()?

Gunakan fungsi getDate() SQL untuk mengira umur berdasarkan tarikh lahir

Soalan:

Banyak pangkalan data mengekalkan maklumat peribadi, termasuk tarikh lahir. Untuk menjejak umur dengan tepat untuk pengurusan rekod, tarikh lahir yang disimpan perlu ditukar kepada umur individu dalam tahun.

Penyelesaian:

Tukar tarikh rentetan kepada jenis data tarikh:

  1. Gunakan fungsi CONVERT() untuk menukar tarikh lahir jenis varchar kepada jenis data datetime:
<code class="language-sql">CONVERT(datetime, DOB)</code>

Kira umur dalam tahun:

  1. Gunakan fungsi DATEDIFF() untuk mengira perbezaan jam antara tarikh dan masa semasa (diperolehi menggunakan getDate()) dan tarikh lahir yang ditukar:
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate())</code>
  1. Bahagikan perbezaan jam dengan 8766 (bilangan jam dalam setahun) untuk mendapatkan umur dalam tahun perpuluhan:
<code class="language-sql">DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0</code>

Output:

<code class="language-sql">SELECT ID, Name, DATEDIFF(hour, CONVERT(datetime, DOB), getDate()) / 8766.0 AS AGE, DOB
FROM [YourTable];</code>

Pertimbangan ketepatan:

Tahun lompat dan pengiraan tarikh yang tepat akan menjejaskan ketepatan. Untuk meningkatkan ketepatan, pertimbangkan perkara berikut:

Cara terbaik untuk mengira umur dalam nombor bulat:

<code class="language-sql">(CONVERT(int, CONVERT(char(8), @Now, 112)) - CONVERT(char(8), @Dob, 112)) / 10000</code>

Cara terbaik untuk mengira umur sebagai perpuluhan:

<code class="language-sql">1.0 * DATEADD(yy, @Dob, @Now)
+ CASE
    WHEN @Now >= DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)) THEN   -- 当年生日已过
        (1.0
        * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now)
        / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1))
        )
    ELSE    -- 当年生日未过
        -1 * (
            -1.0
            * DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), MONTH(@Dob), DAY(@Dob)), @Now)
            / DATEDIFF(day, DATEFROMPARTS(YEAR(@Now), 1, 1), DATEFROMPARTS(YEAR(@Now) + 1, 1, 1))
        )
END</code>

Atas ialah kandungan terperinci Bagaimana untuk Mengira Umur dari Tarikh Lahir Menggunakan getDate() SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn