• 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