Of course it is possible, but your question needs more clarification, like table structure. How to store exactly?
But let's try answering it...
You can achieve this in many ways. Here are two of them:
1) You make an other table that contains a foreign key to whatever you want to link the timestamp and the timestamp. On every Update you not only update what you want, but also insert a row in this table.
2) make an other table that contains a foreign key to whatever you want to link the timestamp and the timestamp. And you create an on update (and probably on insert too) trigger on the primary table that inserts a record in this second table.
To be sure to have the good timestamp, you should let the server give it a value. See:
http://msdn.microsoft.com/en-us/library/ms188383.aspx[
^]
[Update]
See following sample:
CREATE TABLE [dbo].[balance_history](
[ref_id] [int] NOT NULL,
[balance] [money] NOT NULL,
[total] [money] NOT NULL,
[timestamp] [datetime] NOT NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[balances](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NOT NULL,
[balance] [money] NOT NULL,
[total] [money] NOT NULL,
CONSTRAINT [PK_balances] PRIMARY KEY CLUSTERED ( [id] ASC )
) ON [PRIMARY]
CREATE TRIGGER [dbo].[TR_STORE_]
ON [dbo].[balances] AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO BALANCE_HISTORY(ref_id, balance, total, [timestamp])
SELECT id, balance, total, GETDATE()
FROM DELETED;
END