Para mantener alguna posibilidad de utilizar un índice en la columna de la [date]
(incluso si uno no existe hoy en día, es posible que en el futuro), trate de:
AND [date] >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
AND [date] < DATEADD(DAY, 1, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP));
Si está utilizando SQL Server 2008 o mejor, se puede hacer algo como esto para acortar el código pero todavía hacer uso de un índice en [date]
si existe:
AND CONVERT(DATE, [date]) = CONVERT(DATE, CURRENT_TIMESTAMP);
EDITAR
Ya que parece ser confundido por qué 3/6/2012
es el 6 de marzo y no el 3 de junio También podría sugerir que en lugar de insertar manualmente literales de fecha ambiguas como '3/6/2012'
en la base de datos, a tomar la columna de un incumplimiento, tales como:
ALTER TABLE dbo.table_roaster_time_table
ALTER COLUMN [date] DATETIME NOT NULL;
ALTER TABLE dbo.table_roaster_time_table
ADD CONSTRAINT df_date DEFAULT (CURRENT_TIMESTAMP)
FOR [date];
Si va a insertar literales de fecha entonces por lo menos utilizar un formato seguro y sin ambigüedades, como YYYYMMDD
:
INSERT dbo.table_roaster_time_table([date]) VALUES('20120603');
Ahora no hay confusión.
es inútil. He intentado las dos respuestas de urs. pero el tipo de datos que he configurado para la fecha es datetime. otra cosa es que no puedo usar el valor estático como '6/01/2012' porque quiero establecer el horario de tostadores diariamente y para esto quiero la fecha actual diaria. también he usado DÍA (fecha) = Día (getdate() pero tampoco funciona, y recupero el valor nulo para timeid, pero ya tengo 2 registros en ella 1 tengo 3/6/2012 y el otro tiene 2/6/2012 fecha y registros – iConfused
¿Está seguro de que "3/6/2012" es el 3 de junio y no el 6 de marzo? –
También debe evitar el uso de palabras reservadas (y muy vagas) como 'fecha' como nombres de columna.' Created_date' es más largo pero evita una palabra clave reservada y describe mejor los datos en esa columna. –