How do I stop SQL Server converting 1900-01-01 to NULL -
there seems lots of posts on how convert 1900-01-01 null, problem opposite. have stored procedures processing smalldatetime (sql server 2008), keep converting 1900-01-01 null, when want remain 1900-01-01. thoughts?
thanks
fundamentally, sql server can't differentiate.
1900-01-01 00:00:00.000 epoch (zero point) sql server's calendar. , if in sql server:
select 'empty string',convert(datetime,'') it's conversion algorithm doesn't throw error, converts empty string sql server date/time value ... (you guessed it!) ... '1900-01-01 00.00.00.000'.
what happens null values dependent on current setting of sql server set option set concat_null_yields_null. if off, null values treated identically empty strings.
as far stored procedure problem goes (stored procedure turning date/time value of 1900-01-01 null...that's problem stored procedures. sql server won't automatically convert non-null date/time value of 1900-01-01 00.00.00.000 null: doing explicitly.
and old versions of sql server tended treat null , empty string pretty interchangably default. suspect system has been around long time.
as result, sql server tends have hard time distinguishing actual, non-null date/time value of 1900-01-01 00.00.00.000 '' , null
my suspicion, since haven't shown code, stored procedure has code somewhere looks like:
select some_date_time_column = case when t.some_date_time_column == '' null else t.some_date_time_column end some_table t
Comments
Post a Comment