El siguiente código devuelve 1900-01-01 cuando el campo DOB es nulo. Quería (y esperaba) que devuelva una cadena vacía ('') pero no lo es. ¿Cómo debo proceder para obtener los resultados deseados?
isnull(convert(date,DOB,1),'')
sql-server
sql-server-2012
datetime
Juan velez
fuente
fuente

NULLfechas es decirSELECT CAST('' AS DATE). ¿Qué tipo de datos esDOB?Respuestas:
No puede obtener una cadena vacía porque está devolviendo el
DATEtipo de valorISNULL.Por MSDN ,
ISNULLSi está verificando si el valor es o no
NULL, no hay necesidad de convertirlo en una fecha, a menos que desee devolver un valor de fecha (que no parece).En cambio, use:
Que volverá
si el valor es
NULL.Una
NULLfecha esNULL(sin valor). Una cadena vacía, por otro lado, se evalúa como0, que en SQL Server es implícitamente un número entero que representa el número de días desde entonces1900-01-01.fuente
Si desea devolver un valor para DOB cuando se rellena y eliminar el valor nulo cuando no se rellena DOB. Puede probar esto, pero el DOB será un tipo varchar y no un tipo de fecha.
fuente
VARCHARa ayDATEvolver a aVARCHARno tiene ningún sentido. Cuando eliminas esas tonterías, tu respuesta es la misma que la respuesta aceptada con menos exposición.datetimey solo necesitaba una fechaYYYY-MM-DD. Entonces, lanzando mientrasdatepierdo el tiempo. Luego, la conversiónvarcharpermite el uso de laisnullfunción. Entonces todavía obtengo una fecha para los registros poblados y elimino los valores nulos. De lo contrario, me estaba poniendo1900-01-01 00:00:00.000.Esto convertirá la fecha NULL en espacio. La capa de aplicación (Excel) maneja bien el espacio
fuente
Solo crea una vista
CREATE VIEW test_view
AS
SELECT caso cuando año (DOB) <= 1900 y luego nulo DOB finaliza como DOB, algún texto, id de la prueba;
y luego usarlo en su lugar tabla original: seleccione * de test_view
fuente
utilizar
seleccione isnull (Convertir (Varchar (500), Fecha, 106), '')
esta funcionando
fuente