TimeStamp in a block is just the miner's system time and date in Unix. After they mine a block, they add the TimeStamp to the header and finish up. Maybe what the documentation says means it has the accuracy of a few seconds as in "the code updates the TimeStamp variable right before finishing and hashing the block".
And it can be different, if I am not mistaken there can be blocks with bigger block height with TimeStamp which is lower than previous ones. And that is because TimeStamp has a 2 hour room for mistake.
Example:
145044: 2011-09-12 15:46:39
145045: 2011-09-12 16:05:07
145046: 2011-09-12 16:00:05 // ~5 minutes before prior block
145047: 2011-09-12 15:53:36 // ~7 & ~12 minutes before 2 prior blocks
145048: 2011-09-12 16:04:06 // after 2 prior blocks but still before 145045Ref.So miners can vary the time stamp, the transaction IDs and even the block version number to tweak the output during hashing to gain mining efficiency?
You can't just change transaction IDs, TXID is just a double SHA of raw transactions and you need to change the signatures to change the TXID and changing anything about it makes the tx invalid!
P.S. I suggest moving this topic to "Development & Technical Discussion" board.