How do you convert VARCHAR to TIMESTAMP in MSSQL?
Since timestamp is compatible with varbinary the solution will be this in SQL Server 2008:
declare @hexstring varchar(max);
set @hexstring = '0xabcedf012439';
select CONVERT(varbinary(max), @hexstring, 1);
set @hexstring = 'abcedf012439';
select CONVERT(varbinary(max), @hexstring, 2);
Reference. MSN Blogs
A TIMESTAMP is semantically equivalent to VARBINARY(8) (nullable) or BINARY(8) (non-nullable). So you should be able to call the procedure with the parameter unquoted, as follows:
EXEC usp_MyProc @myParam=0x0000000002C490C8
See also SQL Books Online
EDIT for updated question ...
I just tried a few experiments. Frankly, I'm curious as to how you got this represented as a varchar in the first place, since when I do something like:
select top 10 convert(varchar, ts) from foo
Where ts is a timestamp, I get 10 blank rows. (If I don't convert, I see my timestamps.)
However, I tried working at it from the proper direction ... I did this:
select convert(timestamp, '0x0000000000170B2E')
And the conversion resulted in 0x3078303030303030
. So that won't play either. Nor will converting to binary.
I hate to say it, but you might be stuck in a dynamic SQL world. I'd really like to be wrong, though.