الرقمية "تاريخ" في قاعدة البيانات - كيفية التفاعل مع أن استخدام "طبيعية" التواريخ ؟
-
20-08-2019 - |
سؤال
أنا باستخدام قاعدة البيانات هذه من حيث تاريخ 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 التاريخ إلى تنسيق قابل للقراءة.انها أخرى في طريق العودة إلى أن القيمة الرقمية التي يحيرني.