الرقمية "تاريخ" في قاعدة البيانات - كيفية التفاعل مع أن استخدام "طبيعية" التواريخ ؟

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

سؤال

أنا باستخدام قاعدة البيانات هذه من حيث تاريخ colomn هو قيمة رقمية بدلا من قيمة تاريخ.

نعم, وأنا أعلم أنني يمكن أن تغير ذلك مع mouseclick ، ولكن جميع التطبيقات باستخدام قاعدة البيانات التي أدلى بها أحد من أسلافي (والجميع بعده فقط تجاهله و بنيت على).حتى إذا كنت تغييره حتى الآن الكثير af التطبيقات سوف تفشل.:(

أنا جعل لمحة عامة عن قاعدة البيانات تتراوح بين واحد specfic تاريخ إلى آخر.حاولت استخدام قائمة منسدلة ولكن كما يمكن أن أقول لكم ألف الخيارات في قائمة واحدة هو مناسب ، حتى القبيح.

أنا بدلا صغيرة inputfields اليوم - الشهر - السنة ، ولكن هناك يأتي يحترم الرقمية تاريخ في قاعدة البيانات.كنت أود أن يكون لحساب تعود إلى قيمة رقمية بطريقة أو بأخرى...

يجب أن يكون هناك حل سهل هذا.أليس كذلك ؟



أنا باستخدام ASP(vbscript) التطبيق على intraweb و لدي قاعدة بيانات Access.

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

المحلول

الوصول سيتم تحويل عدد من أجلك ، كما ذكر في تواريخ يتم تخزين الأرقام.

Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("TestTable")
rs.AddNew
rs!NumberDate = Now()  'Value stored, eg, 39791.4749074074 '
rs.Update

rs.MoveLast

'To show that it converts back to the correct date / time '
Debug.Print Format(rs!NumberDate, "dd/mm/yyyy hh:nn:ss")

تحرير إعادة التعليق:هنا هو اختبار صغير يوضح تواريخ عاد:

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

strFile = "C:\Docs\LTD.mdb"

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
       "Data Source=" & strFile & ";" & _
       "Persist Security Info=False"

strSQL = "SELECT NumberDate FROM TestTable WHERE NumberDate= #2008/12/7#"

rs.Open strSQL, cn, 3, 3
rs.MoveLast

MsgBox rs.RecordCount

نصائح أخرى

صحيح..لذلك كان من السهل.سأقبل Remou الجواب ، حيث NumberDate= #2008/12/7# لا حيلة.

ولكن وضع على مقربة من هذه المسألة, هنا هو الحل بلدي تافه مع وظائف:

Function DateToNumeric(dayDate)
    DateToNumeric=DateDiff("d","31/12/1899",dayDate) +1 //yup
End Function

    response.Write("9/12/2008, should be 39791.<br /><br />")
    response.write("DateToNumeric('9/12/2008') gives: " &DateToNumeric("9/12/2008")& "<br />")
    response.write("CDate('39791') gives: " &CDate(39791)&"<br /><br />")
    response.write("BECAUSE CDate('1') gives: " &CDate(1))

الإخراج:

9/12/2008, يجب أن يكون 39791.

DateToNumeric('9/12/2008') يعطي:39791
By cdate('39791') يعطي:9-12-2008

لأن by cdate('1') يعطي:31-12-1899

انها مصنوعة بحيث 31/12/1899 ليس يوم الصفر ، ولكن يوم واحد.:/

شكرا لكم أيها الرجال!

الوصول إلى متجر تاريخ داخليا وعدد النقطة العائمة (عدد الأيام منذ 31.12.1899 أو شيء) ، هل حاولت استخدام by cdate() لتحويل الرقم إلى موعد ؟ يجب أن تكون قادرة على الاستعلام باستخدام بين ثم.

احتمال آخر هو أن التاريخ يتم تخزين عدديا ولكن لا يتم تحويل (أنا.هـ 31121899) ، في هذه الحالة يجب أن تكون قادرة على الحصول على موعد مناسب أجزاء باستخدام أي تنسيق() أو يوم() أو الشهر() أو السنة().

ويساعد هذا الأمل.

للأسف التاريخ تخزين 39791 -> 9-dec-2008.نقطة عائمة عدد.

لدي وظيفة جافا سكريبت (كما كتب من قبل نفس السلف) أن convertes التاريخ إلى تنسيق قابل للقراءة.انها أخرى في طريق العودة إلى أن القيمة الرقمية التي يحيرني.

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