سؤال

أحاول إدراج قيمة زمنية فقط، ولكن أحصل على الخطأ التالي

  • على سبيل المثال {"تجاوز سعة SqlDateTime.يجب أن يكون بين 1/1/1753 12:00:00 ص و12/31/9999 11:59:59 م."} System.Exception

من الواجهة الأمامية، يتم تحديد الوقت باستخدام عنصر التحكم "TimeEdit"، مع الأسهم لأعلى ولأسفل.يحتوي الجدول في SQL Server على الحقول المعينة كـ Smalldatetime.أنا فقط بحاجة لتخزين الوقت.أستخدم ما يلي لإعادة البيانات إلى التطبيق

حدد معرفًا ، تحويل (char (5) ، TimeFrom ، 8) كـ Timefrom ، تحويل (char (5) ، timeto ، 8) ك timito من dbo.avability حيث معرف = id و dayname = weekday

كيف يمكنني قضاء الوقت على الطاولة فقط؟

تحرير ~ الحل وفقًا لـ Euardo و Chris ، كان حلي هو تمرير سلسلة DateTime بدلاً من سلسلة زمنية فقط.لقد قمت بتنسيق نتيجتي حسب تنسيق الوقت باستخدام "ز".

شكرًا

هل كانت مفيدة؟

المحلول

اختر تاريخًا يقع في النطاق (على سبيل المثال، 1/1/1970) واستخدمه في كل ما تقوم بإدراجه.

نصائح أخرى

يمكنك ضبط التاريخ على 1/1/1753 وهو التاريخ الأدنى لقيمة التاريخ في MSSQL ثم قم بإضافة الساعة التي تريد تخزينها.بالطبع عليك أن تأخذ ذلك في الاعتبار في كل مرة تحتاج فيها إلى الحصول على القيمة، ولكن يمكنك تغليف ذلك ببعض المساعدين.أو يمكنك استخدام MSSQL 2008 واستخدام نوع بيانات TIME الجديد.

إذا كنت تتبع الوقت فقط، فكر في تخزينه في int كإزاحة من منتصف الليل بأي دقة تحتاجها (ثواني، دقائق، ساعات، ...).يمكنك بعد ذلك تحويله إلى TimeSpan في التعليمات البرمجية الخاصة بك باستخدام طريقة TimeSpan.From??() المناسبة.للعودة في الاتجاه الآخر، يمكنك استخدام TimeSpan.Total؟؟واقتطاع إذا لزم الأمر.إذا كنت بحاجة إلى إجراء استعلامات يدوية، فيمكنك كتابة دالة SQL التي ستحول الساعات/الدقائق/الثواني إلى الإزاحة المكافئة.

أفضل ذلك على استخدام التاريخ والوقت واختيار يوم عشوائي لأنه يجعل الغرض من الحقل أكثر وضوحًا، مما يقلل من الارتباك.

لا يوجد شيء اسمه Time في SQL، بل يوجد DateTime فقط.

لغرضك، سأستخدم شيئًا كهذا لإرجاع الجزء الزمني فقط.

SELECT (GETDATE() - (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime)))

حيث GETDATE() هو التاريخ والوقت الذي تريد تصفيته.

عند ضبط الوقت في قاعدة البيانات، سيتعين عليك إضافة "01/01/1901" أو "01/01/1753" إلى الوقت.

لا تستخدم CAST والتحويل إلى varchar عند العمل مع التاريخ والوقت، فهو بطيء.التزم بالعمليات العددية العائمة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top