Groovy SQL و SimpledateFormat
-
20-09-2019 - |
سؤال
في قاعدة البيانات الخاصة بي ، لدي نوع عمود: DateTime.
مثال بيانات العمود: 2009-02-03 19: 04: 23.0
أنا استخدم : SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
لتحديد تنسيق التاريخ الخاص بي.
أنا أستخدم Groovysql لقراءة الجداول ولكل صفوف ، أقوم بإضافة كائن عينة جديد (تم تعيينه إلى جدول جديد - SampleJ).
هنا إغلاق بلدي:
def sampleQuery(int dataset) {
sqlModule.eachRow("""
select b.*
from dataset a, array_data b
where dataset_id = "${dataset}"
and a.array_data_id = b.array_data_id ;""")
{
def addSample= new SampleJ(it.toRowResult())
addSample.id = "${it.array_data_id}" as int
addSample.dateCreated = dateFormat.parse("${it.date_created}")
//addSample...(more columns)
addSample.save()
}
}
عندما أتحقق من ذلك ، لا يتطابق الجدول المؤقت الخاص بي "samplej" ، مع "$ {it.date_created}".
يتم تعيين جميع التواريخ على "تاريخ جديد ()" (لإغلاق وقت التنفيذ).
عبر تصحيح الأخطاء:
"$ {it.date_created}" يتم تعريفه على أنه "الثلاثاء فبراير 03 19:04:23 CST 2009" ، المقابل (2009-02-03 19: 04: 23.0). يجب أن أحصل على هذا التاريخ!
كيف يمكنني إصلاح هذه المشكلة؟ ليس لدي أي خطأ ، فقط تواريخ خاطئة.
هل هناك طريقة سهلة لتحديد تواريخاتي في SampleJ؟
بديل لـ AddSample.Datecreated = dateFormat.parse ("$ {it.date_created}")؟
المحلول
سيتم تعيين Grails Date_created على الوقت الحالي عن طريق الاتفاقية ، تحتاج إلى إضافة
static mapping = {
autoTimestamp false
}
لأخذ عينة.
بدلاً من ذلك ، إعادة تسمية Datecreated إلى شيء آخر.