
3 answers
The reason for this is because Salesforce stores the Date in UTC time. I assume, when you load your data, the actual UTC datetime of the date you are loading is 1 day earlier.
Since your field is just a date field, any date you provide, is the 12 AM representation of the date, because that's the first time the date is born. For example, 2nd January is born 1 minute after 11.59 PM of 1st January.
Therefore, if your date field is saying 2nd January. Salesforce assume it is 2nd January 12 AM, which when converted to UTC (the format date is saved at the backend), will be 1st January....since, at 2nd January 12 AM GMT+1, UTC is at 1 January 11 PM.