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),'')
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),'')
Respuestas:
No puede obtener una cadena vacía porque está devolviendo el DATEtipo de valor ISNULL.
Por MSDN ,ISNULL
Devuelve el mismo tipo que check_expression. Si se proporciona un NULL literal como check_expression, devuelve el tipo de datos del valor de reemplazo. Si se proporciona un NULL literal como check_expression y no se proporciona un valor de reemplazo, devuelve un int.
Si 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:
SELECT ISNULL( DOB , '')
Que volverá
''
si el valor es NULL.
Una NULLfecha es NULL(sin valor). Una cadena vacía, por otro lado, se evalúa como 0, que en SQL Server es implícitamente un número entero que representa el número de días desde entonces 1900-01-01.
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.
isnull(cast(cast(DOB as date)as varchar),'') as DOB (SQL SERVER)
VARCHARa ay DATEvolver a a VARCHARno 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 fecha YYYY-MM-DD. Entonces, lanzando mientras datepierdo el tiempo. Luego, la conversión varcharpermite el uso de la isnullfunción. Entonces todavía obtengo una fecha para los registros poblados y elimino los valores nulos. De lo contrario, me estaba poniendo 1900-01-01 00:00:00.000.
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
utilizar
seleccione isnull (Convertir (Varchar (500), Fecha, 106), '')
esta funcionando
NULLfechas es decirSELECT CAST('' AS DATE). ¿Qué tipo de datos esDOB?