Replace function has a definition as:
REPLACE ( string_expression , string_pattern , string_replacement )
where
- string_expression: Is the string expression to be searched.
- string_pattern: Is the substring to be found.
- string_replacement: Is the replacement string.
Now what's happening here is Getdate() returns current date as a datetime
datatype which is implicitly converted to varchar or to say a string expression to evaluate the function. Try casting getdate() to varchar as below and you should get your confusion resolved:
select CAST( getdate() AS nvarchar(25))
You can read more about Implicit conversions here: http://msdn.microsoft.com/en-us/library/ms187928.aspx