ASP.NET وفرق خادم SQL Server في الأيام والساعات والدقائق
-
18-09-2019 - |
سؤال
أنا أعمل على تطبيق تتبع القضايا مع ASP.NET و SQL Server 2005. أثناء تتبع المشكلات التي أقوم بتخزينها الموعد النهائي كدولة في قاعدة البيانات وأيضا إذا وظائف شخص ما رسالة في لوحة الرسائل، فإن تاريخ النشر / الوقت هو أيضا الحصول عليه أيضا تخزينها في DB كما DateTime.
الآن متطلباتي هو إظهار الموعد النهائي للمشكلة بأنه "يومين متبقين" عندما يتم ترك يومين فقط، مثل هذا عندما يكون الموعد النهائي قد انتهى بالفعل سود عرض 2 يوما وراء الجدول الزمني. هذا ما أعتقد أنه يمكن تحقيقه مع SQL Server Datediff ()، ولكن في حالة الرسائل التي أحتاج إلى إظهار مثل السندات منذ ساعتين تقريبا 3 دقائق .... أو أرسلت بواسطة 3 أيام قبل 18 ساعة أو شيء مماثل ... ( يمكننا القضاء على الساعات إذا تم نشرها حتى قبل يوم واحد).
حاول جوجل ولكن لا يمكن العثور على أي شيء مفيد. سيكون؛ نقدر مساعدة الكريمة كما هو الحال دائما.
شكرا مقدما.
المحلول
استخدم اختلافا في الاستعلام التالي، وضبط حسب الحاجة. لاستبدال RDBMS غيرها من وظائف التاريخ مع المعادلات المناسبة.
SELECT CASE
WHEN DateValue-GETDATE() >= 1 THEN CAST(DATEPART(dy, DateValue-GETDATE()) AS varchar) + ' day(s) remaining'
WHEN DateValue-GETDATE() >= 0 THEN CAST(DATEPART(hh, DateValue-GETDATE()) AS varchar) + ' hour(s) remaining'
/*Note, it's convenient to switch around for negatives*/
WHEN GETDATE()-DateValue <= '00:59' THEN CAST(DATEPART(mi, GETDATE()-DateValue) AS varchar) + ' minutes(s) overdue'
WHEN GETDATE()-DateValue <= 1 THEN CAST(DATEPART(hh, GETDATE()-DateValue) AS varchar) + ' hours(s) overdue'
ELSE
CONVERT(varchar, DateValue-GETDATE(), 121)
END AS Time_Scale
نصائح أخرى
بدلا من القيام بذلك في SQL، يمكنك استخدام .NET الفترة الزمنية بنية للحصول على هذه الوظيفة.
يمكنك الحصول عليها طرح تاريخ واحد من آخر، وهذا يمنحك الساعات / الدقائق / ثانية التفاصيل التي تحتاج إليها.