احسب بدقة عمر تاريخ الميلاد في SQL Server
سؤال:
كيفية تحويل تاريخ الميلاد المخزن كـ nvarchar (25) في تاريخ في خادم SQL ثم حساب عمره المقابل منذ سنوات؟
عينة من البيانات:
بطاقة تعريف | اسم | DOB |
---|---|---|
1 | جون | 1992-01-09 00:00:00 |
2 | Sally | 1959-05-20 00:00:00 |
الإخراج المتوقع:
]بطاقة تعريف | اسم | عمر | DOB |
---|---|---|---|
1 | جون | 31 | 1992-01-09 00:00:00 |
2 | Sally | 64 | 1959-05-20 00:00:00 |
الإجابة: حساب العمر بدقة
]يواجه النهج المقترح في البداية تحديات في النظر في مخالفات سنوات القفزات والأيام الشهرية. توفر لنا إصدارات SQL Server الحديثة تقنيات محسنة لمعالجة هذه التعقيدات.
أفضل طريقة لحساب عمر الأعداد الصحيحة:
هذه الطريقة بسيطة ومباشرة ، ولكن قد تكون الدقة أقل قليلاً من الطريقة العشرية.
SELECT
(YEAR(GETDATE()) - YEAR(DOB)) - CASE WHEN MONTH(GETDATE())
أفضل طريقة لحساب عمر العشرية:
تستخدم هذه الطريقة الدالة Datediff
و CASE
لحساب العمر بدقة ، وفكر فيما إذا كان عيد ميلاد قد مرت في تلك السنة.
SELECT
DATEDIFF(year, DOB, GETDATE()) - CASE WHEN MONTH(GETDATE())
لاحظ أن الكود أعلاه يفترض أن العمود dob
قد تم تحويله إلى تاريخ إذا كان
DOB لا يزال من
nvarchar (25) ، فأنت بحاجة إلى إضافة تحويل نوع في الاستعلام ، على سبيل المثال:
تحويل (DOT ، DOB ، 120) . يعتمد اختيار نمط التحويل المناسب على التنسيق المحدد لبيانات
DOB . على سبيل المثال ،
تحويل (تاريخ ، DOB ، 120) مناسب لـ "YyyyM-MM-DD HH: MI: SS 'Format. قد تحتاج إلى ضبط هذا القسم لتناسب تنسيق البيانات الخاص بك. يجب أن يكون الاستعلام النهائي مشابهًا لـ:
SELECT
DATEDIFF(year, CONVERT(DATE, DOB, 120), GETDATE()) - CASE WHEN MONTH(GETDATE())
استبدال yourtable باسم الجدول الخاص بك. تعتمد طريقة اختيار عدد صحيح أو عشري على متطلبات الدقة الخاصة بك. الطريقة العشرية أكثر دقة ، ولكن طريقة عدد صحيح أكثر إيجازا.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3