consulta sobre fecha

17/10/2008 - 18:20 por Luis Mata | Informe spam
Hola a Todos

Quiero saber cual es el default del DATETIME

Osea quiero insertar en mi Campo fechas y no fechas, en las fechas no quiero
que se inserte el valor NULL, quiero que se quede en blanco, como lo hago

Luis

Preguntas similare

Leer las respuestas

#11 Luis Mata
17/10/2008 - 22:29 | Informe spam
Lo que pasa que hay una tabla de Ventas al credito y contado

- Credito tiene fecha de vencimiento
- Efectivo no tienen fecha de vencimiento

- al credito le pongo la fecha que le corresponde como fecha de vencimiento
- al efectivo no quiero ponerle ni '' ni NULL ni '1900-01-01'osea dejarlo en
blanco

explico que tambien los que son al credito se van a otra tabla que controla
solo doc al credito ahi no tengo este problema.

Luis

"Carlos M. Calvelo" escribió en el mensaje de
noticias
news:
Hola Luis,

On 17 okt, 19:31, "Luis Mata"
wrote:
correcto pero yo no quiero que salga ninguna fecha, osea vacio el campo
esta
seteado para que no acepte null, y en lugar de dejarlo vacio inserta ese
valor 19000101 y eso es lo que no quiero porque se presta para
confusiones.
entienda que el campo se usa con fechas pero algunos registros se requiere
que quede vacio




Puedes explicar qué es lo que entiendes tu por 'campo vacío',
pero no nulo? Y por qué no puede ser nulo?
Puedes tratar de explicar también que regla es la que requiere que
'quede vacío'? O sea, qué significado tiene el 'estar vacío'?

Tienes tres opciones:

1) permitir que el campo sea nulo en los registros para los que se
'requiere' que ese campo quede 'vacío'.
2) utilizar un valor especial como 19000101 para señalar que no
hay fecha y no aceptar nulos. En ese case 19000101 no es posible
como fecha.
3) normalizar la tabla. Esto quiere decir que borras esa columna
y creas otra tabla con la misma clave primaria que la primera
tabla y con una columna con esa fecha. En esta segunda tabla
solo introduces aquellos registros para los que se tiene que
proporcionar una fecha. Pero va a tener como resultado que al
hacer un outer join de las dos tablas te apareceran otra vez
los nulos. Al hacer el join se pueden convertir los nulos a un
valor especial (como 19000101) pero estamos otra vez con el
el problema original (nulo o valor especial).

La última opción es interesante en el caso de que se espere que para
la gran mayoría de los registos la fecha va a quedar vacía.

Para todas las opciones puedes también al hacer una consulta,
convertir las fechas a tipo char o varchar e interpretar los
nulos o el valor especial como '' (cadena vacía). Pero entonces
la columna en el resultado ya no es datetime, sino char o varchar.

Mira este ejemplo (siguiendo con el de Alejandro) para ver como
puedes hacer esto último con los nulos o con el valor especial:

-
declare @t table (dt datetime NULL)

insert into @t default values
insert into @t values('')
insert into @t values(getdate())

select
dt,
case
when dt is null or dt = '19000101' then ''
else convert(varchar, dt, 121)
end as FechaChar
from @t
-

Vistas otras reacciones creo que aquí se están confundiendo los
nulos como marca de falta de información con la presentación
de ese hecho a los usuarios en las aplicaciones.
Este último ejemplo deja claro que los nulos no tienen ni por
que llegar a las aplicaciones (piensa en vistas), para cuanto
mas a la presentación a los usuarios.

Saludos,
Carlos
Respuesta Responder a este mensaje
#12 Carlos M. Calvelo
17/10/2008 - 22:57 | Informe spam
Hola Luis,

On 17 okt, 22:29, "Luis Mata"
wrote:
Lo que pasa que hay una tabla de Ventas al credito y contado

- Credito tiene fecha de vencimiento
- Efectivo no tienen fecha de vencimiento



Entonces ventas al credito y ventas en efectivo, por muchos
atributos comunes que tengan, son entidades distintas.

Espero que no sea este campo el que determina si una
venta es al crédito o en efectivo, porque entonces estarías
representando dos atributos en una columna.


- al credito le pongo la fecha que le corresponde como fecha de vencimiento
- al efectivo no quiero ponerle ni '' ni NULL ni '1900-01-01'osea dejarlo en
blanco



'En banco' no existe, no es una fecha. Ya entiendo que
estás hablando en terminos de lo que estás acostumbrado
desde Foxpro, pero '' (si eso es 'en blanco') no es una fecha.


explico que tambien los que son al credito se van a otra tabla que controla
solo doc al credito ahi no tengo este problema.



Y porque no está la fecha de vencimiento en esa tabla?
Para pagos en efectivo esa fecha no es aplicable. Cuando
un dato no es aplicable (que no es lo mismo que 'desconocido')
entonces no hace falta esa columna. Como lo estoy entendiendo
yo, tienes un poblema de diseño, no de nulos o 'en blancos'.
Quizás estés confundiendo ventas con pagos.

Saludos,
Carlos
Respuesta Responder a este mensaje
#13 Fernando A. Gómez F.
17/10/2008 - 22:58 | Informe spam
Luis Mata wrote:
Asi es trabajo en Fox y no tengo problemas con fechas en vacio asi
deberia de ser no les parece ya que en facturas al credito tienen una
fecha de vencimiento pero las que son en efectivo no tienen FV.

Luis



Pues es que si una factura no tiene fecha de vencimiento entonces no
tiene fecha y va nulo.

Carlos te preguntó que qué entendías por campo vacío, ya que ni espacios
en blanco, ni nulo ni '' es espacio vacío. ¿Qué es lo que esperas?

Saludos.
Respuesta Responder a este mensaje
#14 Luis Mata
18/10/2008 - 01:38 | Informe spam
Hno respeto tu opinion, pero mi problema no se radica en el diseño sino en
el diseño si bien FoxPro el fecha vacia lo representa con //, no solo he
tenido problemas en este proceso sino en otros.

la pregunta en si es: sino quiero colocar una fecha especifica en un campo
sea cual fuera la razon ¿Que es lo que le pongo? muy aparte de si esta o no
esta diseñado bien, que no todos tenemos el mismo criterio ni logica lo cual
no significa que este mal.


"Carlos M. Calvelo" escribió en el mensaje de
noticias
news:
Hola Luis,

On 17 okt, 22:29, "Luis Mata"
wrote:
Lo que pasa que hay una tabla de Ventas al credito y contado

- Credito tiene fecha de vencimiento
- Efectivo no tienen fecha de vencimiento



Entonces ventas al credito y ventas en efectivo, por muchos
atributos comunes que tengan, son entidades distintas.

Espero que no sea este campo el que determina si una
venta es al crédito o en efectivo, porque entonces estarías
representando dos atributos en una columna.


- al credito le pongo la fecha que le corresponde como fecha de
vencimiento
- al efectivo no quiero ponerle ni '' ni NULL ni '1900-01-01'osea dejarlo
en
blanco



'En banco' no existe, no es una fecha. Ya entiendo que
estás hablando en terminos de lo que estás acostumbrado
desde Foxpro, pero '' (si eso es 'en blanco') no es una fecha.


explico que tambien los que son al credito se van a otra tabla que
controla
solo doc al credito ahi no tengo este problema.



Y porque no está la fecha de vencimiento en esa tabla?
Para pagos en efectivo esa fecha no es aplicable. Cuando
un dato no es aplicable (que no es lo mismo que 'desconocido')
entonces no hace falta esa columna. Como lo estoy entendiendo
yo, tienes un poblema de diseño, no de nulos o 'en blancos'.
Quizás estés confundiendo ventas con pagos.

Saludos,
Carlos
Respuesta Responder a este mensaje
#15 Juan Diego Bueno
18/10/2008 - 10:02 | Informe spam
Hola Luis:

"Luis Mata" escribió en el mensaje de
noticias:
Hno respeto tu opinion, pero mi problema no se radica en el diseño sino en
el diseño si bien FoxPro el fecha vacia lo representa con //, no solo he
tenido problemas en este proceso sino en otros.




Lo de que tu problema no radique en el diseño sino en el diseño, no lo acabo
de pillar

la pregunta en si es: sino quiero colocar una fecha especifica en un campo
sea cual fuera la razon ¿Que es lo que le pongo? muy aparte de si esta o
no esta diseñado bien, que no todos tenemos el mismo criterio ni logica lo
cual no significa que este mal.



Pues un NULL, que no es lo mismo que una cadena vacía o '' ya que entonces
no sería fecha (lo que te han dicho en anteriores posts). Si cara a la
presentación no te gusta que salga NULL, convierte la fecha a cadena y ponla
como cadena vacía cuando sea nula, y cuando tengas que grabar ese dato,
haces la conversión inversa y vuelves a ponerla como fecha. Sql server creo
que te puede hacer la conversión automática de una cadena a fecha si está en
el formato correcto, pero dudo que convierta '' en NULL así que eso deberías
hacerlo tú.

Un saludo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida