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