I use the following code to generate TimeUUID column name, so the columns are ordered by column insertion time, and column overwrite by duplication is avoided:
ClockResolution clock = new MicrosecondsSyncClockResolution();
long timeInMicroSeconds = clock.createClock();
UUID timeUUIDColumnName = TimeUUIDUtils.getTimeUUID(timeInMicroSeconds);
System.out.println("timeUUIDColumnName = " + timeUUIDColumnName);
However, I find that if I extract the timestamp from the generated UUID (e.g., "6e2c1680-bc25-1929-b094-005056c00001") on this web site: http://www.famkruithof.net/uuid/uuidgen, it becomes more than one thousand years in the future. But if I divide the "timeInMicroSeconds" by 1000 before passing into "TimeUUIDUtils.getTimeUUID()", then the extracted timestamp is correct.
Even though I only rely on TimeUUID to help me keep columns' relative orders in data arrival time and to help avoid duplicates (thus I got all I need in my applications), yet it's bothering me a bit mentally that it does not translate to correct timestamp.
I understand that if I divide it by 1000, before passing it to "TimeUUIDUtils.getTimeUUID()", the time might not be unique anymore, as "MicrosecondsSyncClockResolution" keeps a "lastTime" to avoid duplicate (when duplicate happens, it just ++lastTime, which will be gone if I divide it by 1000).