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.