John, I have found lost 4 transactions, they are from invoices but not connected with invoices. Found using your SQL with left outer join and ordering by invoices.date_posted. They have Null in invoices columns. They have vendor names In transactions.description... Found! All of them are transactions with splits “Lot link”, “offset between documents: Bill... Credit note ....”!
> > On Apr 30, 2020 at 22:19, <John Ralls (mailto:jra...@ceridwen.us)> wrote: > > > > GnuCash stores all dates as UTC but displays them as local, applying the > timezone rules for the date, not for today. So in EEST 2020-02-12 22:00:00 > displays as 2020-02-13, 2020-06-12 21:00:00 displays as 2020-06-13, but > 2020-02-21 21:00:00 displays as 2020-02-21. Regards, John Ralls > On Apr > 30, 2020, at 11:42 AM, finf...@gmail.com wrote: > > It is not just adding > one day, it depends on the time. > > Looks like time 00:00:00 is the same > date, not next. > > From 21:00:00 is the next date in most cases, but I > did not check all transactions manually =) > > How the program converts > this wrong dates to the correct ones in its GUI? > > I believe I have > found a correct way to convert all the dates including wrong ones to correct > dates in Postgresql (pgAdmin 4): > > > date(t.post_date AT TIME ZONE > 'UTC' AT TIME ZONE 'EEST') AS DATE_AT_timezone_EEST > > EEST is a correct > zone in my case. CEST does not work. > > The transactions.post_date type > is timestamp without timezone: 2017-12-31 21:00:00 > > t.post_date AT > TIME ZONE 'EEST' AS timestamp_AT_timezone_EEST gives 2017-12-31 21:00:00+3 > > > date(t.post_date AT TIME ZONE 'UTC' AT TIME ZONE 'EEST') AS > DATE_AT_timezone_EEST gives 2018-01-01 > > Looks strange but works. > > > 2. > > There are only 3 transactions with 22:00:00 not connected with > invoices. > > There is only 1 transaction with 21:00:00 not connected > with invoices. > > Thinking how to find them... > > > > On > 30/04/2020 21:25, John Ralls wrote: >> Hmm, true. Should be always, since > you're in a time zone east of the prime meridian. So you also want to > increment the day on those. I think it would be safest to do it in two > queries, the first one being >> >> update transactions post_date = > post_date + interval '1 day' where post_date::TIME != '10:59:00'; >> >> > and the second to update the time as before. >> >> Regards, >> John > Ralls >> >> >>> On Apr 30, 2020, at 11:07 AM, Finfort > <finf...@gmail.com> wrote: >>> >>> If post_date is 2017-12-31 22:00 or > 23:00, it means (sometimes?) the real date is 2018-01-01. At least in cases > where I manually checked the invoices. >>> Setting all times to 10:59:00 > will give wrong dates in the program. >>> Now they are displayed correctly > in the program somehow... >>> >>> >>> >>>> On Apr 30, 2020 at 20:59, > <John Ralls> wrote: >>>> >>>> I don't think that's necessary. >>>> > >>>> To fix the wrong times just do an update query, something like >>>> > >>>> update transactions set post_date::TIME = 10:59:00 where > post_date::TIME != 10:59:00; >>>> >>>> I don't know Postgresql's > date-time functions well enough to know if that syntax works, you might have > to adjust it a bit. You might create a table with a DATETIME column and put a > couple of rows in it to test against while you tweak. Make sure that GnuCash > isn't connected to the database when you run that. >>>> >>>> Regards, > >>>> John Ralls >>>> >>>> >>>>> On Apr 30, 2020, at 10:45 AM, Finfort > <finf...@gmail.com> wrote: >>>>> How can I help? >>>>> I can send you my > gnucash file if it helps to find all the bugs. >>>>> And how can I change > now my wrong dates in transactions? >>>>> >>>>>> On Apr 30, 2020 at > 20:41, <John Ralls> wrote: >>>>>> Yeah, it's definitely a bug. I easily > found the wrong code and I'll fix it for 3.903 and 3.11. >>>>>> The query > actually accounts for only 543 of the 547 wrong times, so there's another > error somewhere else. >>>>>> Regards, >>>>>> John Ralls >>>>>> >>>>>>> > On Apr 30, 2020, at 10:27 AM, Finfort <finf...@gmail.com> wrote: >>>>>>> > Also I tried to unpost and post again. No changes. >>>>>>> >>>>>>>> On > Apr 30, 2020 at 19:44, <Finfort> wrote: >>>>>>>> Hi John, >>>>>>>> The > result is: >>>>>>>> 22:00:00 253 >>>>>>>> 00:00:00 18 >>>>>>>> 21:00:00 > 250 >>>>>>>> 23:00:00 22 >>>>>>>> So wrong dates are only when I use > invoices. >>>>>>>> On 29/04/2020 23:56, John Ralls wrote: >>>>>>>>> > Please remember to copy the list on all replies. >>>>>>>>> >>>>>>>>> I > take it that that means that you do in fact use the business invoice > features. Let's see if that's the source of the problem. Run this query: > >>>>>>>>> >>>>>>>>> select t.post_date::TIME count(t.post_date::TIME) from > transactions as t inner join invoices as i on i.post_txn = t.guid group by > t.post_date::TIME; >>>>>>>>> >>>>>>>>> Regards, >>>>>>>>> John Ralls > >>>>>>>>> >>>>>>>>> >>>>>>>>>> On Apr 29, 2020, at 1:41 PM, Finfort > <finf...@gmail.com> wrote: >>>>>>>>>> >>>>>>>>>> But the program use > business features like entering invoices or bills. >>>>>>>>>> And we have > this mess. >>>>>>>>>> How we can manage that? >>>>>>>>>> >>>>>>>>>> > >>>>>>>>>> >>>>>>>>>>> On Apr 29, 2020 at 23:23, <John Ralls> wrote: > >>>>>>>>>>> >>>>>>>>>>> Dimon, >>>>>>>>>>> >>>>>>>>>>> I'm in Silicon > Valley, so 10 hours behind you. >>>>>>>>>>> >>>>>>>>>>> By "simple > invoices" do you mean that some of the transactions are created using > business invoices? >>>>>>>>>>> >>>>>>>>>>> My book goes back to 1993 and > entry_dates begin in 2001. We changed the transaction time from local > midnight in early 2011 so `select distinct time(post_date) from > transactions;` returns >>>>>>>>>>> 10:59:00 >>>>>>>>>>> 07:00:00 > >>>>>>>>>>> >>>>>>>>>>> If I say instead `select distinct time(post_date) > from transactions where post_date > '2011-01-01';` I just get 10:59:00. > >>>>>>>>>>> >>>>>>>>>>> But I don't use the business features, so if > that's the problem my book won't show it. >>>>>>>>>>> >>>>>>>>>>> > Regards, >>>>>>>>>>> John Ralls >>>>>>>>>>> >>>>>>>>>>>> On Apr 29, > 2020, at 10:13 AM, Finfort <finf...@gmail.com> wrote: >>>>>>>>>>>> Hi > John! >>>>>>>>>>>> You are here finally! >>>>>>>>>>>> Waiting for you all > the day :) >>>>>>>>>>>> All my data I have entered inside Gnucash 3.7, > Ubuntu. No imports! Scheduled are ok! >>>>>>>>>>>> Just simple invoices > inside the program! >>>>>>>>>>>> The SQL type conversions inside Postgres > give better results with 22:00 but 21:00 show the same date again even in > April - summer time where is for example 2018-06-04 21:00:00+03. > >>>>>>>>>>>> 22:00+02 is 00:00 of the next day, 21:00+03 (summer time) is > 00:00 of the next day but conversion does not work... >>>>>>>>>>>> So, > maybe you could try this SQL to check your records and revise the procedure > which posts the data to DB? >>>>>>>>>>>> Thank you, >>>>>>>>>>>> Dimon. > >>>>>>>>>>>> >>>>>>>>>>>>> On Apr 29, 2020 at 19:50, <John Ralls> wrote: > >>>>>>>>>>>>> >>>>>>>>>>>>>> On Apr 29, 2020, at 2:18 AM, > finf...@gmail.com wrote: >>>>>>>>>>>>>> Dear John, >>>>>>>>>>>>>> Thank > you for your response. >>>>>>>>>>>>>> I have collected some statistics from > my DB. >>>>>>>>>>>>>> My DB has 1724 records - transactions. > >>>>>>>>>>>>>> This is my SQL query, it is pretty simple and shows all the > combinations of times in posted_date timestamps in transactions table, number > of repetitions for that time value, min enter_date, max enter_date: > >>>>>>>>>>>>>> SELECT >>>>>>>>>>>>>> t.post_date::TIME as "POST TIME", > >>>>>>>>>>>>>> COUNT(t.post_date::TIME) as "REPS", >>>>>>>>>>>>>> > min(t.enter_date) as "MIN ENTER DATE", >>>>>>>>>>>>>> max(t.enter_date) as > "MAX ENTER DATE" >>>>>>>>>>>>>> FROM transactions t >>>>>>>>>>>>>> GROUP > BY t.post_date::TIME >>>>>>>>>>>>>> ORDER BY t.post_date::TIME > >>>>>>>>>>>>>> Here are the results: >>>>>>>>>>>>>> ---- >>>>>>>>>>>>>> > POST TIME REPS MIN ENTER DATE MAX ENTER DATE >>>>>>>>>>>>>> "00:00:00" 18 > "2020-01-26 18:07:14" "2020-01-28 19:11:07" >>>>>>>>>>>>>> "10:59:00" 1177 > "2019-12-23 17:55:29" "2020-04-23 11:24:24" >>>>>>>>>>>>>> "21:00:00" 251 > "2020-01-08 17:43:54" "2020-04-23 10:36:33" >>>>>>>>>>>>>> "22:00:00" 256 > "2020-01-08 17:06:59" "2020-04-23 11:24:08" >>>>>>>>>>>>>> "23:00:00" 22 > "2020-01-27 19:16:04" "2020-01-28 19:39:49" >>>>>>>>>>>>>> ---- > >>>>>>>>>>>>>> I live in Cyprus, here is UTC +2 and summer time UTC +3, as I > know. >>>>>>>>>>>>>> I started to study Gnucash in December 2019 and have > entered my data of 2016-2020. >>>>>>>>>>>>>> I never changed my place and > time zone in the period of working with Gnucash. >>>>>>>>>>>>>> 1. Most of > the records have time in date_posted 10:59:00 for all the period of data > entering. >>>>>>>>>>>>>> 2. Only 2 days of entering have the results of > 00:00:00 - 18 records. >>>>>>>>>>>>>> 3. Only 2 days of entering have the > results of 23:00:00 - 22 records. >>>>>>>>>>>>>> 4. 21:00:00 and 22:00:00 - > 500+ records - 30% of transactions for all the period of data entering. > >>>>>>>>>>>>>> Can you please explain that? >>>>>>>>>>>>>> Why I have so > many different time stamps? When and why the system decides to write time > different from 10:59:00? >>>>>>>>>>>>>> I understand that the system writes > real ENTERING date and time and it is reasonable to use the time zone > somehow. >>>>>>>>>>>>>> When I POST the document with exact date in it I > suppose to see this POST DATE the same wherever in Cyprus or UK or USA. But > entering the same date I can have 5 different results. How it works and what > is the reason - I have no idea... >>>>>>>>>>>>>> Maybe you can give some > examples and the algorithm to convert these dates? Where else I have to > convert dates? >>>>>>>>>>>>> As those are all posted dates you've found a > bug or two as posted date should always have a 10:59:00 timestamp. The 21:00 > and 22:00 times are clearly midnight local, and which one is used *should* be > determined by whether DST is in effect for the posted date in your locale. It > seems that 40 transactions somehow used UK time instead of Cypress time. > >>>>>>>>>>>>> Did you enter all of the transactions from the GnuCash UI or > did you import some of them? If you imported some is there any way to tell > which were imported (and from where and by what method), perhaps by the > accounts their splits are in or because you still have some of the import > files? >>>>>>>>>>>>> Were any of them created by scheduled transactions? > >>>>>>>>>>>>> Regards, >>>>>>>>>>>>> John Ralls >>>>>>>>>>>>> >>>>>>>> > >>>>>> >>>> > > _______________________________________________ gnucash-user mailing list gnucash-user@gnucash.org To update your subscription preferences or to unsubscribe: https://lists.gnucash.org/mailman/listinfo/gnucash-user If you are using Nabble or Gmane, please see https://wiki.gnucash.org/wiki/Mailing_Lists for more information. ----- Please remember to CC this list on all your replies. You can do this by using Reply-To-List or Reply-All.