GNOME Bugzilla – Bug 791848
GC 2.6.x does not handle ISO dates introduced with GC 2.7
Last modified: 2018-06-30 00:01:57 UTC
GC 2.7(.2) extends the date fields so that they can store dates in ISO format. All new records contain dates in the new format and the application handles both new and old records fine. However, this is not backwards compatible as GC 2.6(.19) shows 1970-01-01 for any date stored in ISO format.
What I forgot to mention here, and is useful for reference, is that I'm referring to sqlite backend. Not sure how other db storage types are affected. OT: Looking forward to that query system update!
Actually it looks like it's not forward-compatible, either: GnuCash 2.7.2+ crashed on me when I tried to open a SQLite3 database created in 2.6.
I have to say that I did not experience that issue. I was using my production file (!) and everything seemed fine with the dates in 2.7.2. The testing was not extensive but I was entering transactions for a couple of days.
This is more-or-less fixed for 2.6.20 and 2.7.3 in that opening a SQLite3 database in 2.7.3 will set a feature that will cause any version older than 2.6.20 to open it read-only. The dates on all of the transactions will be invisible, having not been read. It would have been better for 2.7.3 to set that feature only if it wrote to the database but it turns out that the way we construct core objects (Transactions, Splits, etc.) triggers the commit code and with the current design there's no way for the backend to tell the difference thanks to a deficiency in the way GObject classes are constructed. The C++ rewrite of the core classes will fix that by providing proper constructors.
GnuCash bug tracking has moved to a new Bugzilla host. This bug has been copied to https://bugs.gnucash.org/show_bug.cgi?id=791848. Please update any external references or bookmarks.