I use SYSDATETIME().
It is ANSI/ISO compliant (supposedly, I only found one reference at http://sqlhints.com/tag/datetime-vs-datetime2/).
SYSDATETIME() adds a level of precision useful if I'm logging transactions and DATETIME2(n) datatype can use less storage space if you specify the precision appropriately. It's only available starting in SQL Server 2008 and can populate the DATETIME2 data type.
If I need to work with and older database I use CURRENT_TIMESTAMP or, if the DBA doesn't like CURRENT_TIMESTAMP, I use GETDATE().
SELECT
SYSDATETIME() [SYSDATETIME],
CURRENT_TIMESTAMP [CURRENT_TIMESTAMP],
GETDATE() [GETDATE]
Results:
SYSDATETIME
2014-10-01 10:46:09.8724461
CURRENT_TIMESTAMP
2014-10-01 10:46:09.870
GETDATE
2014-10-01 15:46:09.870