I am currently reading through "Querying Microsoft SQL Server 2012" (for the 70-461 Exam). The book suggests to use Standard SQL when possible unless T-SQL offers functionality that Standard SQL does not. The reason for this is portability of the code and portability of knowledge. Talking with another DBA it sounds like the industry standard is the other way around, to use T-SQL (or PL/SQL for Oracle) with no concern of what the standard SQL is, but rather whatever is easier to interpret and/or use. Two examples I have are COALESCE vs ISNULL and CURRENT_TIMESTAMP vs GETDATE.
COALSCE vs ISNULL
COALSCE(city, '') and ISNULL(city,'') produce the same result. COALSCE, however, has more functionality than ISNULL. The only difference between these two is how they work with NULLs in SELECT INTO statements. The book suggests to use COALSCE since it is the SQL Standard instead of the T-SQL ISNULL. The argument for using ISNULL is only because it's easier to read.
GETDATE vs CURRENT_TIMESTAMP
SELECT GETDATE() and SELECT CURRENT_TIMESTAMP yield the same result. The difference being GETDATE is T-SQL and CURRENT_TIMESTAMP is standard SQL. With this, too, I hear the common practice is to use GETDATE when using T-SQL rather than using CURRENT_TIMESTAMP, even though CURRENT_TIMESTAMP is portable.
I'm sure the answer comes down to personal choice and business needs, but is there a "best practice", as the book suggests? Is it common practice to use whatever is more convenient, the T-SQL vs Standard SQL, or to keep the code portable by using Standard SQL where applicable?