I would reconsider what you are trying to achieve... Every "event" that you detect in logic will need a separate GSV to trap its "TimeStamp". That itself could be costly in terms of memory and execution speed.
But the timestamp data could also give you false information. It will tell you when you "looked at" the data (cyclic with your code "scan"), not when it actually changed.
If your "Events" are digital inputs, then you can trigger Event Tasks that will allow you to more accurately record the "Change-Of-State" of one or more inputs.
For recording timestamps, I would not burden your control system with deciphering the info from the WallClock, unless this info is going to be needed regularly, by that I mean every scan of your logic.
If you just store the "CurrentValue" attribute of the WallClockTime data, it is a 64-bit value representing the number of microseconds since 0000hrs, Jan 1st, 1970.
On the rare occasion you may need this info, SQL is easily capable of telling you the actual date/time of the timestamp.