Hola, amos a ver, resulta que estoy haciendo la paginilla para las compos de stratos y me he encontrado con un problemilla.
Quería guardar las fechas de inicio y final de las compos como un campo timestamp de mysql, ya que luego sería muy fácil obtener el tiempo que resta para empezar o acabar una compo.
El problema es que cuando quiero meter una variable que contiene el timestamp, parece que no me la pilla.
Un trozo del código:
$inicio = mktime($inicio_h, $inicio_m, 0, $inicio_m, $inicio_d, $inicio_a);
$final = mktime($final_h, $final_m, 0, $final_m, $final_d, $final_a);
$creacion = mysql_db_query("sc", "insert compos(inicio, final, tema, bases, organizador)
values('$inicio', '$final', '$tema', '$bases', '$organiza')");
Los campos inicio y final de la tabla son de tipo timestamp. En teoría, un campo timestamp permite guardar cualquier fecha en este formato, o al menos eso creo, claro.
La función mktime convierte las horas, minutos, segundos, mes, día y año que le pasas a un timestamp.
Todos los campos se insertan bien, salvo los de inicio y final, que toman los valores por defecto y no hacen caso a lo que le paso en el insert.
No sé si en vez de un campo timestamp serviría un campo bigint simplemente.
Seguro que tengo un fallo tonto por ahí. Si alguien más versado en estos temas me puede dar una idea... :rolleyes:
Bueno, esta semana espero tener plenamente funcional la web de las compos, para que podáis empezar a sugerir mejoras y adecentar la web.
No se a que se debe este problema pero yo también lo tuve, y acabé usando campos BIGINT para guardar el timestamp.
EDIT: Por cierto, esta sintaxis para integrar variables en un string está permitido en PHP?
Citar$creacion = mysql_db_query("sc", "insert compos(inicio, final, tema, bases, organizador)
values('$inicio', '$final', '$tema', '$bases', '$organiza')");
Yo es que siempre hago algo como "insert into tabla values (".$num.", '".$string."')" y cuando tienes muchos campos tantas comillas y puntos resultan molestos.
- Las inserciones de fechas normalemete se suelen hacer entre comillas simples como las cadenas.
- Antes que usar un bigint ( lol ) usa el Date ( Fecha ) o DateTime ( FechaHora ).
Un saludo ^_^
en sql las fechas realmente son strings camuflados
Cita de: "AgeR"Hola, amos a ver, resulta que estoy haciendo la paginilla para las compos de stratos y me he encontrado con un problemilla.
Quería guardar las fechas de inicio y final de las compos como un campo timestamp de mysql, ya que luego sería muy fácil obtener el tiempo que resta para empezar o acabar una compo.
El problema es que cuando quiero meter una variable que contiene el timestamp, parece que no me la pilla.
Un trozo del código:
$inicio = mktime($inicio_h, $inicio_m, 0, $inicio_m, $inicio_d, $inicio_a);
$final = mktime($final_h, $final_m, 0, $final_m, $final_d, $final_a);
$creacion = mysql_db_query("sc", "insert compos(inicio, final, tema, bases, organizador)
values('$inicio', '$final', '$tema', '$bases', '$organiza')");
Los campos inicio y final de la tabla son de tipo timestamp. En teoría, un campo timestamp permite guardar cualquier fecha en este formato, o al menos eso creo, claro.
La función mktime convierte las horas, minutos, segundos, mes, día y año que le pasas a un timestamp.
Todos los campos se insertan bien, salvo los de inicio y final, que toman los valores por defecto y no hacen caso a lo que le paso en el insert.
No sé si en vez de un campo timestamp serviría un campo bigint simplemente.
Seguro que tengo un fallo tonto por ahí. Si alguien más versado en estos temas me puede dar una idea... :rolleyes:
Bueno, esta semana espero tener plenamente funcional la web de las compos, para que podáis empezar a sugerir mejoras y adecentar la web.
Varias cosas:
De entrada la sintaxis correcta para que las variables sean sustituidas en una cadena por sus valores es cuando la cadena esta delimitada por comillas dobles y no simples ("$zz" en lugar de '$zz')
Quizas no es lo mas adecuado por el comportamiento de los timstamp, ya que el campo timestamp siempre se actualiza cuando se toca el registro y hay q leer y reactualizar para que no se pierda la informacion.
Luego hay un problema con el formato de los timestamp en la 3.2x y la 4.1.x ya que en esta ultima se ha pasado a ser un timestamp unix convencional en lugar de las 4.0.x y anteriores que tenian un formato propio.
Para realizar operaciones con fechas, o bien usas bigint's o usas un campo datetime normal y lo transformas a la entrada y salida... aprovechando si quieres el SQL para realizar las operaciones con las fechas.
zupervaca
En un SGBD los datos de fecha son nativos, como mucho podemos decir que son bytes camufaldos :D. No se si podemos definir al MySQL como SGBD. ( No )
TheWind
He presupuesto que el codigo que nos ha puesto era para simplificar. Pues Ager no se queja de la introduccion del resto de valores ;). Como bien dices para separar texto literal de las variables se han de poner comillas dobles. Ahora, los campos cadena y fecha en un SGBD deben ser tratados con comilla simples detras y delante. (SQL'92)
"insert into tabla values (" + $entero + ",'" + $cadena + "','" + $fecha + "')"
Usar bigint es como poner en C un break para salir de un bucle... ...efectivo, pero poco elegante ;)
Un saludo
sorry pense que se hablaba del mysql por el topic mas que nada
sorrry, solo trataba de explicarte que lo que decias era mentira de una forma elegante. :D
Cita de: "CoLSoN2"Por cierto, esta sintaxis para integrar variables en un string está permitido en PHP?
Citar$creacion = mysql_db_query("sc", "insert compos(inicio, final, tema, bases, organizador)
values('$inicio', '$final', '$tema', '$bases', '$organiza')");
Yo es que siempre hago algo como "insert into tabla values (".$num.", '".$string."')" y cuando tienes muchos campos tantas comillas y puntos resultan molestos.
Yo siempre he usado esa sintaxis y me ha funcionado bien para todos los tipos de campos hasta ahora, salvo los dichos timestamps parece ser.
Aunque no sea la solución perfecta creo que usaré bigints, me parece más cómodo y rápido que andar con conversiones de fechas cada vez :ph34r:
Pq no pruebas usar un Datetime ? :D
Alter table x
alter column xxxx datetime;
MySQL DocP.D: Nunca habia visto esa sintaxis que usas :D
Cita de: "MAMestre"] sorrry, solo trataba de explicarte que lo que decias era mentira de una forma elegante. :D
como que mentira? en mysql el formato de la fecha es en formato string asi: AAAA-MM-DD, en otras bases de datos no lo se, pero en mysql si
editado: pero si es que el propio link que pones es asi, vaya gente
zupervaca
en sql las fechas realmente son strings camuflados
a.) Las fechas son valores enteros camuflados.
b.) Las fechas se codifican en segundos, centésimas o milésimas. ( dependiendo de la precisión del tipo de dato del SGBD )
c.) Las fechas suelen tener un base desde la cual se empiezan.
Por Ejemplo el TimeStamp en MsSQL 4.1The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
d.) Con sumas se incremtan dias, meses, años, etc. ( facil, facil )
e.) Con restas se calculan diferencias de fechas. ( facil, facil )
f.) Las comparaciones entre fechas agiles y rápidas ( facil, facil )
g.) Existen funciones propias del gestor para convertir fechas a cadenas.
Si un fecha fuera realemnte un string:
a.) Ocuparian más espació que si son numericas.
b.) No tendrian una base de fecha inicial y no estarian limitadas en rango de años.
c.) Sumas, restas y comparaciones serian muy lentas.
d.) No existirian funciones propias del gestor para la conversion de fechas a cadenas.
Ejercicio puntuable:
¿ Como gestiona una bios la fecha/hora/seg ?
Nota:
Nada más faltaba que un usuario tubiera que insertar una fecha en milisegundos en un gestor de bbdd :D.
Un saludo.
Citarzupervaca
en sql las fechas realmente son strings camuflados
¿entonces por que dices que antes estaba mintiendo? la verdad es que no entiendo a algunos usuarios
Pq una fecha no es realemente un string camufaldo.
Una fecha es un entero camufaldo ( con algun matiz ).
P.D: Creo que me exprese con claridad, en el post anterior. Si no es así que alguien más me lo diga pq me voy a empezar a preocupar :blink:
veamos me parece que tu hablas de como se guarda en la base de datos y yo hablo del lenguaje sql que son cosas diferentes
editado: un ejemplo
- oracle (base de datos) se comunica con el programador mediante sql (lenguaje), mi primer post estaba bien, sql es un lenguaje y es a lo que me referia
Sea como sea, me he decantado por los bigints para guardar el timestamp y va de lujo, es facilísimo hallar diferencias sin necesidad de tener que convertir ningún dato. En este caso lo quería para hallar las horas que faltan para finalizar una compo.
Ahora me queda "sólo" por hacer las páginas y funciones para subir los datos y archivos de los juegos, y las páginas para presentar resultados (compos hechas, juegos presentados...).
Lo dicho, esta semana espero tenerlo todo.
Gracias a todos! ;)
Cita de: "MAMestre"] TheWind
He presupuesto que el codigo que nos ha puesto era para simplificar. Pues Ager no se queja de la introduccion del resto de valores ;). Como bien dices para separar texto literal de las variables se han de poner comillas dobles. Ahora, los campos cadena y fecha en un SGBD deben ser tratados con comilla simples detras y delante. (SQL'92)
"insert into tabla values (" + $entero + ",'" + $cadena + "','" + $fecha + "')"
Usar bigint es como poner en C un break para salir de un bucle... ...efectivo, pero poco elegante ;)
Un saludo
Ma]Mestre: No me referia a la sintaxis de SQL, sino a la de PHP. Pero ahora veo q no lei bien la sentencia y no vi las comillas " al principio y final de cadena.
Sobre que bigint sea o no elegante, es efectivo y eso al final es lo que cuenta -yo uso la propia bbdd para hacer calculos de fechas- pq PHP no es un lenguaje pensado para la elegancia formal, sino para ser practico -y ciertamente ha huido demasiado de la formalizacion, una cosa es acabar siendo un Modula-3 o Eiffel, y otra es tener funciones str_* str* y sin el str ...- no voy a extenderme en una discusion metodologica sobre la elegancia y la claridad formal en el codigo, es algo q debe tenerse en cuenta, pero no a cualquier precio.
Ager: Huye de usar funciones de BBDD directamente en PHP, usa una abstracicon como adodb (adodb.sf.net) PEAR::DB o Metabase ya que de entrada en PHP 5.0.X no cuentas con las funciones mysql_* de entrada (hay que compilar el php para que las soporte, debido a cambios de licencia) es una solucion muy poco elegante.
TheWind
Creo que use el término elegancia con cierta ironia. Que pensariamos de un programador si vemos un código escrito en C donde para salir en un bucle usa un if seguido de un break. ¿ Le contratariamos ? Pues es lo mismo que opinio yo de usar un tipo de dato bigint de 8bytes para guardar una fecha. En un SGBD cuando estamos hablando de cientos de millones de registros, se pasa de hablar de elegancia a error. Para el caso en question, no es relevante.
Por otro lado la distrubución de la lógica de negocio es mas comoda desde la BBDD como bien apuntas, si bien por temas de volumen de trabajo y usuarios muchas veces se ha de distribuir en otros lugares fuera del SGBD. Esto ya puede ser la maquina local o bien un Apache, ISS, DLLs, etc... ( arquitectura de 3 o N niveles ).
zupervaca
Para manipular un gestor de base de datos se usa el lenguaje SQL, más el extendido de cada plataforma. Transact SQL ( MS SQLServer ), PL/SQL ( Oracle ), etc...
Oracle se comunica a través de un proceso ( SQL Listener ) que acepta peticiones de conexión, o sin el, de manera local a través del SQL PLus.
Toda la sentencia ( transaccion ) sql se envia de forma integra al motor de oracle en formato string. Una vez alli, se valida la sintaxis de la sentència y se crea un plan de ejecución para resolver la consulta. Es en ese punto cuando los datos se formatean a su tipo correspondiente para comparaciones. Y sigue...
Creo que esto no se ajusta para nada a la frase de:
"en sql las fechas realmente son strings camuflados"
P.D: Si usasis el ananlizador de consultas en MS SQLServer, se puede ver el plan de ejecución pulsando Ctrl-L en vez de ejecutar la transaccion ( senetencia sql ). En oracle no es tan facil ver...
Cita de: "MAMestre"] Creo que use el término elegancia con cierta ironia. Que pensariamos de un programador si vemos un código escrito en C donde para salir en un bucle usa un if seguido de un break. ¿ Le contratariamos ? Pues es lo mismo que opinio yo de usar un tipo de dato bigint de 8bytes para guardar una fecha. En un SGBD cuando estamos hablando de cientos de millones de registros, se pasa de hablar de elegancia a error. Para el caso en question, no es relevante.
Por otro lado la distrubución de la lógica de negocio es mas comoda desde la BBDD como bien apuntas, si bien por temas de volumen de trabajo y usuarios muchas veces se ha de distribuir en otros lugares fuera del SGBD. Esto ya puede ser la maquina local o bien un Apache, ISS, DLLs, etc... ( arquitectura de 3 o N niveles ).
Si ese recurso esta usado de forma puntual y para solucionar algo que de otra forma requeriria un proceso mucho mas largo, claro que si: es importante poder cumplir fechas y entregar cosas que funcionen, ya que con eso ganas el tiempo necesario para analizar en profundidad mejores formas (en funcion de coste/resultados).
Ahora si continuamente es un uso de chapuzas, no.
CitarCreo que esto no se ajusta para nada a la frase de:
"en sql las fechas realmente son strings camuflados"
osea que sigues diciendo que en sql las fechas no son strings camuflados?? :P
Citarzupervaca
Para manipular un gestor de base de datos se usa el lenguaje SQL, más el extendido de cada plataforma. Transact SQL ( MS SQLServer ), PL/SQL ( Oracle ), etc...
Oracle se comunica a través de un proceso ( SQL Listener ) que acepta peticiones de conexión, o sin el, de manera local a través del SQL PLus.
Toda la sentencia ( transaccion ) sql se envia de forma integra al motor de oracle en formato string. Una vez alli, se valida la sintaxis de la sentència y se crea un plan de ejecución para resolver la consulta. Es en ese punto cuando los datos se formatean a su tipo correspondiente para comparaciones. Y sigue...
el SQL listener que mencionas en un servidor que traga strings sql, por mucho que adornes tu sabiduria todo esto que dices no niega en absoluto que el sql maneje strings para las fechas
¿por que no pones un consulta a una base de datos que contenga una fecha? a claro si la pones veremos que las fechas son strings, ains que cosas
Voy a entrar yo también en la discursión sobre qué son las fechas. :P
En SQL hay varios tipos de fecha. Los DateTime creo que sí que son cadenas de carácteres. Los Timestamp son números. Ambos representan una fecha.
De todas formas, tampoco estoy seguro con lo del DateTime.
De hecho, es bastante lógico que usar fechas en formato numérico, como los timestamps, faciltan las comparaciones y operaciones. No sólo las facilitan sino que es mucho más rápido que andar convirtiendo cadenas, operar y volver a reconvertir.
Bueno, sobre la solución que he elegido del bigint, pues la verdad, podía haber elegido guardar la fecha en un DateTime. Lo malo es que para calcular por ejemplo el tiempo que falta para que acabe una compo, tenía que andar convirtiendo cadenas para comprobarlo, cosa que de este modo me ahorro.
Ej: (Fecha_finalizacion - Fecha_actual)/3600 = horas que faltan para que acabe la compo.
si quieres salir de dudas crea una tabla que contenga un datetime obtenlo desde el php e impremelo en un html, veras que efectivamente son strings, no obstante el php y el sql permite realizar operaciones matematicas con ellos, por eso lo de strings camuflados
Zupervaca
Citar¿por que no pones un consulta a una base de datos que contenga una fecha? a claro si la pones veremos que las fechas son strings, ains que cosas
Citarel SQL listener que mencionas en un servidor que traga strings sql, por mucho que adornes tu sabiduria todo esto que dices no niega en absoluto que el sql maneje strings para las fechas
Citarsi quieres salir de dudas crea una tabla que contenga un datetime obtenlo desde el php e impremelo en un html, veras que efectivamente son strings, no obstante el php y el sql permite realizar operaciones matematicas con ellos, por eso lo de strings camuflados
Lo de imprimir en html para ver que es un string es genial. snif snif...
Todo esto se responde con:
CitarToda la sentencia ( transaccion ) sql se envia de forma integra al motor de oracle en formato string. Una vez alli, se valida la sintaxis de la sentència y se crea un plan de ejecución para resolver la consulta. Es en ese punto cuando los datos se formatean a su tipo correspondiente para comparaciones.
Que parte de la frase no entiendes ?
Ager
El datetime también es numerico en la gestion interna el motor sql. Piensa que sino no tendria sentido que estubiera limitado en su rango.
Por cierto mi sabiduria la adorno con el OCP de oracle y el MCBDA de Microsfot. ;)
Cita de: "zupervaca"si quieres salir de dudas crea una tabla que contenga un datetime obtenlo desde el php e impremelo en un html, veras que efectivamente son strings, no obstante el php y el sql permite realizar operaciones matematicas con ellos, por eso lo de strings camuflados
:D :D :D
MA]Mestre olvidate no creo que lo hagas entrar en razón.
Citar
Ager
El datetime también es numerico en la gestion interna el motor sql. Piensa que sino no tendria sentido que estubiera limitado en su rango.
Pues también es verdad (nooo)
es que discutir esto es ridiculo, yo estoy hablando del lenguaje y tu hablas de la base de datos, yo te lo he dicho en un post anterior y sigues en las tuyas, el sql es un lenguaje para comunicarse con las bases de datos, sql significa structured query lenguage y trabaja con fechas en formato string, no se si sabras que el php es un generador de paginas web y ese es su principal motivo con lo que si puedes imprimir valores en un html, hay hasta clases hechas ya llamadas templates
la limitacion de la fecha la pone la propia bios y no el sql
zupervaca
"...php es un generador de paginas web..."
"...la limitacion de la fecha la pone la propia bios y no el sql..."
puedes ampliar/desarrollar un poco mas estos conceptos, me intrigan (genial)
Un saludo.
Cita de: "zupervaca"Templates
Fechas en SQL
te pregunta por una cosa y le respondes otra neng.
a mi tambien me interesa eso de que el
...php es un generador de paginas web...
...la limitacion de la fecha la pone la propia bios y no el sql...
Porque no lo explicas un poco mejor ? (genial)
P.D: que es el apache ?
¿es que no sabes leer? en los links lo ves perfectamente
Eres tu el que no sabe leer,
eres tu el que no sabe escribir,
eres tu el que no sabe comprender
eres tu el que no tiene ni puta idea
ok ?
y encima das lecciones y vas de arrogante. Vete la universidad, culturizate.
Citame los parrafos de tus links donde respondes a esas dos cosas. Que me quiero reir un poco mas anda...
No se como alguno tiene tanta paciencia con semejante especimen.
Citar"...php es un generador de paginas web..."
el principal objetivo del php es recibir datos y devolver el resultado oportuno, con lo que es un generador de paginas web
Creacion de paginas web con PHPCitar"...la limitacion de la fecha la pone la propia bios y no el sql..."
cualquiera sabe que la bios es la que tiene una fecha base atraves de la que se calcula la fecha actual, el sql no es el que limita la fecha, el sql por quinta vez me parece que lo digo es un lenguaje para comunicarse con bases de datos;
SQL = structured query lenguagesi quieres pongo en google mas palabras clave y todavia puedo poner mas links para que os deis cuenta que hablais sin saber lo que decis
"...php es un generador de paginas web..."
"...el principal objetivo del php es recibir datos y devolver el resultado oportuno, con lo que es un generador de paginas web..."
"...no se si sabras que el php es un generador de paginas web y ese es su principal motivo con lo que si puedes imprimir valores en un html..."
"...la limitacion de la fecha la pone la propia bios y no el sql..."
"...cualquiera sabe que la bios es la que tiene una fecha base atraves de la que se calcula la fecha actual..."
"...si quieres salir de dudas crea una tabla que contenga un datetime obtenlo desde el php e impremelo en un html..."
"...hay hasta clases hechas ya llamadas templates..."
"...la limitacion de la fecha la pone la propia bios y no el sql..."
"...en sql las fechas realmente son strings camuflados ..."
(http://www.julianlara.com/fotostv/tvleo_dantes2.jpg)
Degiik el Apache es un indio (ole)
MA]Mestre son afirmaciones falsas lo que digo? por que si lo son me gustaria saberlo para comunicarlo a varias paginas webs que tienen tutoriales sobre estos temas
editado: si dices que alguna no es cierta dime cuala es
a) Php es un lenguaje de programación.
b.) El codigo php es interpretado por un servidor, como Apache o IIS, que es quien genera el html.
c) La limitación de la fecha en un servidor de bases de datos, no la define ni el lenguaje SQL ni la Bios ( jajaja ), si no que el propio gestor de bbdd.
d) "Crea una tabla que contenga un datetime obtenlo desde el php e impremelo en un html" y que ?
e) No es lo mismo una clase que un template.
d) "...en sql las fechas realmente son strings camuflados ..." Falso.
Puede irte a la web de la NASA o de Barrio Sesamo, y les dices que se pasen por aquí todos a decirme que estoy equivocado. No prob. (ole)
Edit: Por cierto, ninguno de tus links afirman lo contrario, si me equivo, citalos de manera textual.
CitarPhp es un lenguaje de programación
¿cual es su principal objetivo? generar paginas web, a lo mismo que el asp y demas
lenguajes webCitarEl codigo php es interpretado por un servidor, como Apache o IIS, que es quien genera el html
si pero desde el php le dices como debe de generar la pagina web
CitarLa limitación de la fecha en un servidor de bases de datos, no la define ni el lenguaje SQL ni la Bios ( jajaja ), si no que el propio gestor de bbdd
toda base de datos relacional tiene como norma meter datos logicos y reales con lo que introducir fechas superiores al 31 de diciembre del 9999 no tiene sentido (8bytes), tambien tiene la fecha corta que son 4bytes dependiendo de la proximidad a la fecha actual, la bios parte de 1970
Citar"Crea una tabla que contenga un datetime obtenlo desde el php e impremelo en un html" y que ?
que el sql nos obliga a tratar las fechas como strings
CitarNo es lo mismo una clase que un template
ya lo se, pero un template en php sirve como plantilla html, luego en el template cambias los valores que tu quieras para generar la web, creo que esto no logras entenderlo, nadie ha hablado de clases aqui, si no que hay clases implementadas para facilitar el trabajo con templates
Citar"...en sql las fechas realmente son strings camuflados ..." Falso
pon una consulta aqui de sql con fecha y ya veras que no es falso
sigo insistiendo que no logras entender que el
SQL es un lenguaje intermedio entre la base de datos y el programador, con lo que cada base de datos puede tener su propia implementacion del SQL
Citar
¿cual es su principal objetivo? generar paginas web, a lo mismo que el asp y demas lenguajes web
si pero desde el php le dices como debe de generar la pagina web
Dale la vuelta a la tortilla las veces que quieras, que si la abuela fuma, que si el perro habla, pq la afirmación de que: " ... php es un generador de paginas web..." es falsa , me encanta que empecemos a estar deacuerdo en en algo :D
Citar...toda base de datos relacional tiene como norma meter datos logicos y reales...
¿ Que son datos lógicos ? ¿ Que son datos reales ? ¿ Como es la sintaxis para introducir datos lógicos ?
¿ Como es la sintaxis para introducir datos reales ? :D
Citar...con lo que introducir fechas superiores al 31 de diciembre del 9999 no tiene sentido (8bytes)...
¿ Que tiene ocho bytes ? el sentido ? el 31 ? Diciembre ? 9999 ? :D
Citar...tambien tiene la fecha corta que son 4bytes dependiendo de la proximidad a la fecha actual...
Que tiene que ver la fecha actual con la fecha corta ?
Citarla bios parte de 1970
¿ Eso quiere decir que no se puede poner fechas inferiores a 1970 ? juajuajua :D
¿ La fecha de la bios tambien es un string camuflado ? :D
Citarque el sql nos obliga a tratar las fechas como strings
ahh, claro claro, habia olvidado que son strings camuflados.
Citar
Citar
No es lo mismo una clase que un template
ya lo se, pero un template en php sirve como plantilla html, luego en el template cambias los valores que tu quieras para generar la web, creo que esto no logras entenderlo, nadie ha hablado de clases aqui, si no que hay clases implementadas para facilitar el trabajo con templates
Pues si sabes que un template no es una clase, pq dices ?
"...hay hasta clases hechas ya llamadas templates..."
Los "peros me sobran", pq si empiezo a analizar el "pero" voy a poner otra vez la imagen de lonardo dantes.
Citar
Citar
"...en sql las fechas realmente son strings camuflados ..." Falso
pon una consulta aqui de sql con fecha y ya veras que no es falso
Pon una consulta que ? Que pongo las comillas simples ? por eso es un string camufaldo ?
Cito textualmente de MSDN Microsoft.
"SQL Server contempla básicamente dos tipos de datos donde se pueden almacenar las fechas propiamente dichas: Datetime y SmallDateTime; en este cuadro veremos las diferencias entre esos dos tipos de datos.
Bien, ahora ya conocemos los tipos de datos de nuestro motor, pero surge la gran pregunta: ¿Cómo guarda internamente SQL Server las fechas? ¿Lo hace en formato MM/DD/YYYY o lo hará en DD/MM/YYYY? Lamento informarles que nuestro motor siempre guarda las fechas de una sola forma y no está referida a ningún formato (Americano, Español, Japonés), como los que mencionamos.
SQL Server guarda las fechas DateTime como números enteros de 4 Bytes (Los primeros 4 Bytes almacenan la fecha y los otros 4 Bytes, la hora); en SmallDatetime, como tienen menor precisión, en lugar de ser dos grupos de 4 son dos grupos de 2. Ahora sabemos no sólo qué tipos de datos tenemos para guardar nuestras fechas y horas, sino también cómo las guarda el motor realmente."
LinkTe reto a que me encuentres un sitio oficial donde se diga que una fecha es un string camuflado o algo parecido (ole)
Citarphp es un generador de paginas web..." es falsa , me encanta que empecemos a estar deacuerdo en en algo
php sirve para generar paginas web
Citar¿ Que son datos lógicos ? ¿ Que son datos reales ? ¿ Como es la sintaxis para introducir datos lógicos ?
¿ Como es la sintaxis para introducir datos reales ?
por lo que comentas no creo que hayas manejado las reglas de validacion en las bases de datos
Citar¿ Que tiene ocho bytes ? el sentido ? el 31 ? Diciembre ? 9999 ?
Que tiene que ver la fecha actual con la fecha corta ?
http://www.microsoft.com/spanish/msdn/comu...ices/art157.asp CitarPues si sabes que un template no es una clase, pq dices ?
"...hay hasta clases hechas ya llamadas templates..."
Los "peros me sobran", pq si empiezo a analizar el "pero" voy a poner otra vez la imagen de lonardo dantes
vamos a ver no vale poner un trozo de la frase por que entonces das a entender lo que te da la gana, esos puntitos que pones antes de la palabra "hay" son muy importantes para entender toda la frase: "no se si sabras que el php es un generador de paginas web y ese es su principal motivo con lo que si puedes imprimir valores en un html, hay hasta clases hechas ya llamadas templates", ¿ahora entiendes mejor la frase? php es orientado a objetos y la gente ha creado clases con el tema de los templates y asi generar paginas web desde el php de forma mas sencilla, ¿te explico otra vez lo que es un template o lo leiste en el anterior post?
CitarPon una consulta que ? Que pongo las comillas simples ? por eso es un string camufaldo ?
si el sql exige comillas en un dato es que es de tipo string, despues lo que haga la base de datos con ese string ya es cosa de la base de datos, pero el estandar sql exige que la fecha sea en formato string cuando se le pasa a la base de datos
CitarCito textualmente de MSDN Microsoft.
"SQL Server contempla básicamente dos tipos de datos donde se pueden almacenar las fechas propiamente dichas: Datetime y SmallDateTime; en este cuadro veremos las diferencias entre esos dos tipos de datos.
Bien, ahora ya conocemos los tipos de datos de nuestro motor, pero surge la gran pregunta: ¿Cómo guarda internamente SQL Server las fechas? ¿Lo hace en formato MM/DD/YYYY o lo hará en DD/MM/YYYY? Lamento informarles que nuestro motor siempre guarda las fechas de una sola forma y no está referida a ningún formato (Americano, Español, Japonés), como los que mencionamos.
SQL Server guarda las fechas DateTime como números enteros de 4 Bytes (Los primeros 4 Bytes almacenan la fecha y los otros 4 Bytes, la hora); en SmallDatetime, como tienen menor precisión, en lugar de ser dos grupos de 4 son dos grupos de 2. Ahora sabemos no sólo qué tipos de datos tenemos para guardar nuestras fechas y horas, sino también cómo las guarda el motor realmente."
Link
Te reto a que me encuentres un sitio oficial donde se diga que una fecha es un string camuflado o algo parecido
estas hablando de como se guardan los datos en la base de datos y sql es interpretado por la base de datos como php por el servidor web, sql no se encarga en ningun caso de introducir los datos en la base de datos, para pasarle una fecha a la base de datos al sql se la pasas en formato string, sql trabaja con fechas en formato string como ya te he dicho, ya te he dicho en un anterior post que tu estas hablando de como se almacenan los datos en la base de datos y yo del lenguaje para comunicarnos con ella, creo que sigues sin saber lo que es sql y ya te lo he puesto creo que en cinco post y sigo diciendo que no se puede discutir de algo cuando dos personas no hablan de lo mismo
Citar" php sirve para generar paginas web "
dale las vueltas que quieras, neng. :D
"por lo que comentas no creo que hayas manejado las reglas de validacion en las bases de datos"
Los datos no son reales o logicos. Son datos :D
Si hablas de las reglas de negocio, no hables de ellas como datos. Te suenan campanas neng, pero no tienes ni puta idea.
Ah por cierto, te vuelvo a repetir que tengo el MCDBA, y el OCP, aparte de la carrera universitatia de ITIG. Así que algo mas del tema sabré. :D Aparte de estar trabajando en el sector
y tu que estudios tienes piltrafilla ? pq eres muy arrogante cuando afiermas que no crees que haya manejado reglas de validacion y cuando me explicas que no se lo que es el SQL
Te repites con mi link :D, cita algo textual donde diga que las fechas son strings, neng.
Pon todas la frases enteras si te apetece, son mas ridiculas cuanto más cites :D
Citarsi el sql exige comillas en un dato es que es de tipo string, despues lo que haga la base de datos con ese string ya es cosa de la base de datos, pero el estandar sql exige que la fecha sea en formato string cuando se le pasa a la base de datos
Ya te lo explique, pero mira tu por donde te lo vuelvo a pegar.
"Toda la sentencia ( transaccion ) sql se envia de forma integra al motor de oracle en formato string. Una vez alli, se valida la sintaxis de la sentència y se crea un plan de ejecución para resolver la consulta. Es en ese punto cuando los datos se formatean a su tipo correspondiente para comparaciones."
Ahora es cuando si yo fuera tu, con tu arrogancia diria... " ¿ es que no sabes leer ? " ;)
CitarToda la sentencia ( transaccion ) sql se envia de forma integra al motor de oracle en formato string
tu lo has dicho, se envia al motor de oracle en formato string, espero que ahora lo entiendas, y sigo diciendote que sql es un lenguaje
editado: si quieres saber estudios o algunos proyectos que he realizado pasate por mi web personal, aunque esta claro que esto no es una guerra de conocimientos que creo que es asi como te lo has tomado
editado2:
CitarTe repites con mi link , cita algo textual donde diga que las fechas son strings, neng
¿seguro que sabes lo que es el sql? ¿o el problema es que no sabes lo que es un string?