Visual Basic.NET - Convertir Date dd/mm/yyy a yyyy/mm/dd. ¿Por qué no se puede?

   
Vista:

Convertir Date dd/mm/yyy a yyyy/mm/dd. ¿Por qué no se puede?

Publicado por carlos (20 intervenciones) el 27/04/2015 23:33:39
Hola.

Tengo una fecha tipo "Date" que cojo de un DateTimerPicker. Esta fecha que viene en formato dd/mm/yyyy la quiero pasar a yyyy/mm/dd pero sin que deje de ser tipo Date.. no vale cosas así: Format(Fecha, "yyyy-MM-dd") porque me lo convierte a String.

La explicación de que no me valga convertirlo a string es porque esa fecha la quiero comparar con un dato tipo Date que tengo en una base de datos en MySQL. Y en MySQL el formato de esa fecha es yyyy/mm/dd.

Mi consulta es así: Select * from facturacion where fecha >= '" & Fecha & order by ...

Si lo paso a string, entonces no compara bien la fecha con la fecha de la base de datos.

Así que no se como hacerlo.

¿Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de txema

Convertir Date dd/mm/yyy a yyyy/mm/dd. ¿Por qué no se puede?

Publicado por txema (1 intervención) el 27/04/2015 23:54:50
Puede haber otras soluciones (posiblemente más sencillas) pero yo lo haría así:

1
2
3
4
5
6
7
8
<?php
$fecha = substr($_POST['myfecha'], 6,4)."-".
                 substr($_POST[''myfecha''], 3,2)."-". 
                 substr($_POST[''myfecha''], 0,2);				 
$fecha = date_create($fecha);
$fecha = date_format($fecha, "Y-m-d");
echo $fecha;
?>

Entiéndase que $_POST[''myfecha''] es lo que me llega del DateTimerPicker dentro de un form.

(la separo con guiones porque creo que así lo prefiere MySQL)

Nos cuentas si te sirve.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Convertir Date dd/mm/yyy a yyyy/mm/dd. ¿Por qué no se puede?

Publicado por carlos (20 intervenciones) el 27/04/2015 23:57:38
Perdón, creo que lo puse en el foro equivocado. Yo estoy programando en Visual Basic.Net y php no lo domino demasiado, lo siento. Si se te ocurre algo parecido para Visual Basic te lo agradecería. Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Convertir Date dd/mm/yyy a yyyy/mm/dd. ¿Por qué no se puede?

Publicado por omar pcc.nett.2018@hotmail.com (151 intervenciones) el 28/04/2015 16:06:49
en la propiedad format y custonformat
podras realizar lo que desees de manera sencilla

en format elije la ultima opcion

despues de vas en customformat y escribes "YYYYMMDD"

espero no haberme equivocado pero asi te resultara
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Convertir Date dd/mm/yyy a yyyy/mm/dd. ¿Por qué no se puede?

Publicado por Horroroso (46 intervenciones) el 28/04/2015 16:26:58
Creo que tienes problemas con los conceptos..

Un date no tiene un formato predefinido (de hecho generalemnte se maneja internamente como un numero).

la representacion dd/mm/yyyy o yyyy/mm/dd o la que quieras es solo eso, representacion.

Te recomiendo que hagas algo como esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Shared Function GetFacturas(ByVal Fecha As Date) As DataTable
            Dim dt As New Data.DataTable
            Using DB As New OleDb.OleDbConnection(strConnString)
 
                Try
                    If DB.State = ConnectionState.Closed Then DB.Open()
                    Dim cmd As New Data.OleDb.OleDbCommand()
                    cmd.Connection = DB
                    cmd.CommandText = "SELECT * FROM facturacion WHERE Fecha >=@Fecha"
                    cmd.Parameters.AddWithValue("@Fecha", Fecha)
 
                    Dim da As New Data.OleDb.OleDbDataAdapter()
                    da.SelectCommand = cmd
 
                    da.Fill(dt)
                    da.Dispose()
 
 
                Catch ex As Exception
                    Throw ex
                Finally
                    DB.Close()
 
                End Try
            End Using
            Return dt
        End Function

Es decir, que utilices parametros para ejecutar el SQL.
En caso de que no funcione puedes intentar:
1
cmd.Parameters.AddWithValue("@Fecha", Fecha.ToOADate)

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Convertir Date dd/mm/yyy a yyyy/mm/dd. ¿Por qué no se puede?

Publicado por carlos (20 intervenciones) el 28/04/2015 22:03:22
Hola, gracias por las respuestas pero al no ser un experto en Visual Basic, me temo que no entiendo bien vuestra solución, pero creo que es mucho más complicado que lo que realmente necesito.

Por si no me expliqué bien: en mi base de datos tengo una fecha, por ejemplo 2005/07/04 y quiero ver si en mi programa en visual basic una fecha es mayor o menor a esa fecha de la base de datos. En la base de datos la fecha es tipo Date y su formato por defecto es yyyy/mm/dd por tanto imagino que para que me haga una buena comparación tengo que tener en visual basic un dato de tipo Date con ese mismo formato yyyy/mm/dd.

Pero el formato que me llega en Visual por el DatatimePicker es al revés: dd/mm/yyyy y si lo paso a string con funciones tipo Format (fecha, "yyyy/mm/dd") me lo compara mal (imagino porque estoy comparando un string en Visual Basic con un Date en MySQL)

Gracias por vuestras sugerencias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Convertir Date dd/mm/yyy a yyyy/mm/dd. ¿Por qué no se puede?

Publicado por carlos (20 intervenciones) el 28/04/2015 22:13:16
Por resumir, y no liarnos. En Mysql tengo yyyy/mm/dd. ¿Cómo lo comparo con una fecha que tengo en Visual Basic? En Visual tengo dd/mm/yyyy
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Convertir Date dd/mm/yyy a yyyy/mm/dd. ¿Por qué no se puede?

Publicado por Horroroso (46 intervenciones) el 04/05/2015 15:10:51
De nuevo, no tiene nada que ver el formato de la fecha si no como estas intentando comparar, pasame el codigo donde ejecutas la sentencia SQL y te lo regeso modificado para que funcione.

Tu mismo das la respuesta, estas comparando un string vs un Date, la cosa es comparar un Date en ambos asi no habrá problemas. Para comparar un Date en Ambos, utiliza el codigo que te pase.

Si no sabes como modificar tu codigo, postealo y yo lo modifico por ti.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar