I've been having headaches with dates in Appian and I think it has to do with the way appian handles timezones.
Unless I'm mistaken, appian is supposed to record dates in GMT then then later read them in whatever local time zone is appropriate. What I'm finding is that it records in the local time zone, then later reads it as though it were GMT and adjusts to the local time zone, resulting in incorrect dates.
The more frustrating thing about this is how I access/display the date affects what gets shown.
For example if I use a date picker, appian records the date as 4 hours earlier. Thus 8/8/2025 will be recorded in the db as 8/7/2025 8:00 pm EDT
If I display the date in a text field, I'll get 8/7/2025 8:00 pm EDT, but if I put it through any kind of function such as text() to format what it looks like it'll come out as 8/8/2025.
What's worse is I imported a csv of a bunch of legacy data and the dates were all converted to date/time and had the 4 hours subtracted when recorded.
How can I keep this from happening?
Discussion posts and replies are publicly visible
You're using DateTime instead of Date type. DateTime gets timezone-converted (causing your 4-hour shift), but Date doesn't. Switch your CDT fields from DateTime to Date type and use a!dateField() instead of a!dateTimeField(). For existing data, display with text(gmt(ri!dateTimeValue), "MM/dd/yyyy") to bypass timezone conversion. For CSV imports, use todate() not todatetime().
In your process model , that writes record to this table , can you check the time zone is GMT in the process properties-> time zone . Also confirm that the checkbox ‘Override with initiators time zone’ is unchecked. If its checked then the data will be stored as per the process initiator’s time zone setting instead of GMT so you should have it unchecked! Let me know how it goes.