Firebird 2.1 الفواصل الزمنية والمدنية
-
22-09-2019 - |
سؤال
أفهم أنه ، تمشيا مع interbase v6 ، لا يدعم Firebird 2.5 SQL-92 INTERVAL
الكلمة الرئيسية. على الأقل ، لذلك يقترح هذه المرجع وأخطاء SQLCode -104 المتكررة تحاول الحصول عليها INTERVAL
S للعمل تحت Firebird's ISQL (1).
كيف ، إذن ، لا أفسر المخالفات في حسابنا المدني للوقت - الشهور ليست طويلة بشكل موحد ، ولا أيام مع وقت التوفير والتعديلات القفز ، ناهيك عن سنة الارتباك ، وما إلى ذلك - عند الأداء TIMESTAMP
الحساب تحت فايربيرد 2.1؟
كيف يمكنني تحديد "قبل شهر واحد قبل شهر واحد" أو "بعد أسبوع واحد" من المعطى TIMESTAMP
؟ ماذا عن "بعد يوم واحد" أو "قبل ساعتين"؟
المحلول
يمكنك استخدام dateadd () و datediff () وظائف مدمجة.
بدلاً من ذلك ، يمكنك أيضًا استخدام الكلاسيكية تاريخ الحساب.
نصائح أخرى
إذا لم يتم تنفيذ هذا في Firebird ، فربما يمكنك القيام بذلك من خلال التكنولوجيا التي تستدعي خادم SQL الخاص بك ، والحصول على الطابع الزمني الناتج؟ أعلم أنه يمكن القيام به بسهولة في Java أو .NET
يمكنك أيضا استخدام المهام من udf الخارجي fbudf.dll
هناك UDF خارجي لطيف يدعى RFUNC: http://rfunc.sourceforge.net/, ، لديها وظائف تاريخ لطيفة مثل DaysBetween و Invate (D ، I1 ، I2 ، i3) وغيرها الكثير
- قم بطرح يوم واحد من تاريخ الطابع الزمني في حلقة حتى يتغير الشهر.
- قم بطرح يوم واحد من تاريخ الطابع الزمني في حلقة حتى يتغير اليوم إلى الأحد.