sql - ejemplos - inner join
Redondecimiento de fechas al día en una consulta SQL (3)
Access almacena sus fechas como números de coma flotante donde la parte entera es el número de días desde el 1 de enero de 1900 y la parte fraccionaria es la fracción del día (hora del día). Access se complace en tratar estas fechas como números sin realizar ninguna conversión, por lo que:
fix([tblSearchEngine02].[Date])
recortará la parte fraccional del día y establecerá el tiempo de vuelta a la medianoche y le permitirá agrupar por día.
Estoy atrapado con algo. Estoy tratando de tomar una larga columna de fechas de las cuales están formateadas para mostrar también horas y minutos y ejecutar una consulta grupal para pegar valores en el nivel de fecha sin reconocer las diferencias en horas y minutos. Desafortunadamente no tengo ni idea de cómo empezar . El código que puse hasta ahora que devuelve cada fecha agrupada con la hora y los minutos es el siguiente:
st_sql = "INSERT INTO [tblSearchEngine03] ([Date])" & _
"SELECT [tblSearchEngine02].[Date]" & _
"FROM [tblSearchEngine02]" & _
"GROUP BY [tblSearchEngine02].[Date]" & _
"ORDER BY [tblSearchEngine02].[Date]"
Application.DoCmd.RunSQL (st_sql)
No estoy seguro de la mejor manera de truncar la fecha en la tabla "tblSearchEngine02" ..
Enfócate primero en la pieza SELECT
. Puede usar DateValue()
para sus valores de campo de Date
. Comience con esto como una nueva consulta en el diseñador de consultas de Access:
SELECT DateValue(se02.Date)
FROM tblSearchEngine02 AS se02
GROUP BY se02.Date
ORDER BY se02.Date
O puede usar DISTINCT
lugar de GROUP BY
:
SELECT DISTINCT DateValue(se02.Date)
FROM tblSearchEngine02 AS se02
ORDER BY se02.Date
Después de tener el SELECT
funcionando correctamente, puede convertirlo en una consulta INSERT
(el diseñador de consultas de Access lo llama una consulta "append").
Y cuando luego Debug.Print st_sql
la misma declaración en su código de VBA, incluya Debug.Print st_sql
para que pueda ver el texto de la declaración completa en la ventana Inmediato y asegúrese de que sea lo que esperaba. (Puede usar Ctrl + g para ir a la ventana Inmediato).
Una forma de hacerlo es formatear la fecha / hora como una cadena de fecha. Si usa YYYY/MM/DD
, se ordenará correctamente. De lo contrario, puede convertir la fecha / hora en un int para recortar el tiempo y luego convertir de nuevo a un tipo de fecha / hora.
Aquí hay un ejemplo de formato como cadena:
Format([tblSearchEngine02].[Date], "yyyy/mm/dd")
Este es un ejemplo de conversión para llegar a una fecha (el resultado final será un tipo de datos de fecha / hora para que se 03/16/2014 00:00
como 03/16/2014 00:00
según la información de su localidad)
CDate(CInt([tblSearchEngine02].[Date]))