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

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -