SQL Server 2005: تحويل SmallDateTime يتصرف بشكل مختلف في العرض والاستعلام "العادي"

StackOverflow https://stackoverflow.com/questions/1969132

  •  21-09-2019
  •  | 
  •  

سؤال

لديّ رؤية تعيد بشكل أساسي جميع السجلات من جدول ، ويضيف عمودًا "isodate" الذي من المفترض أن يكون التاريخ في iso-format.

CREATE VIEW [dbo].[v_bedarfe]
AS 
   SELECT *,convert(varchar(16),datum,20) As isodat FROM bedarfe
GO

"datum" -الدان صغيرة. كانت نتائج الاستعلام على isodat ... "مفاجأة" ، لذلك لتوضيح النقطة ، جربت هذا:

select top 10 datum,isodat,convert(varchar(16),datum,20) As isodat2 from v_bedarfe

مما أدى إلى:

Screenshot of result from query

وهذا يبدو خطأ جدا.

لذلك أفترض أن لديّ توقعات خاطئة أو "أسيء" شيئًا هنا ، لكنني لا أرى ما يمكن أن أفعله خطأ وسأقدر أي اقتراحات كيفية العودة إلى المسار الصحيح هنا ...

شكرًا

ميخائيل
(آمل أن يتم عرض لقطة الشاشة بشكل صحيح عند نشر هذا ، لا تظهر المعاينة)

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

المحلول

استخدام * في الآراء خطرة. إذا تغير تعريف الجدول ، * يمكن أن يتسبب في أن يعرض العرض خاطئ الأعمدة. إسقاط وإعادة إنشاء العرض بدون *, ، ومعرفة ما إذا كان ذلك يحدد المشكلة.

PS Convert 20 هو في الواقع ODBC Canonical ، yyyy-mm-dd hh:mi:ss(24h), ، انظر صفحة MSDN.

نصائح أخرى

آخر PARM في التحويل هو تنسيق الإخراج.

20 => yyyy-mm-dd hh: mi: ss (24 ساعة)

131 => DD/MM/YY HH: MI: SS: MMMAM

يرى MS SQL Convert ()

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