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.