yo recomendaría dejar de utilizar un tipo de datos DateTime e ignorando los valores de fecha - idealmente usando MinDate estática para SQL (Google él). Esto le dará los beneficios de trabajar con un campo fuertemente tipado y el único costo será unos pocos bytes adicionales.
En cuanto a los rangos, guárdelos en dos columnas separadas. Luego puede restar uno de otro para determinar la diferencia.
Editar: hicimos algunas búsquedas en Google.
- SQL Server 2008 agrega un tipo de datos de tiempo, por lo que es posible que desee considerarlo.
- Puede utilizar SQL 2005 de tipo DateTime y combinarla con la función CONVERT para extraer sólo el HH: MM: SS.mmm
- Diferentes versiones de SQL admiten diferentes fechas mínimas. Se podría utilizar una fecha estática que será apoyado por todos como el 1/1/2000, o puede utilizar el valor mínimo de SQL 2005 de 1/1/1753 y anexar los valores de tiempo para ese día startic
Así si te quedas con 2005, elige tu fecha estática, como 1/1/2000, y almacena tus tiempos en ella. Entonces 1m: 30s sería 2000-1-1 00: 01: 30.000, y 1h: 15m sería 2000-1-1 01: 15: 00,000
Puede hacer Fecha2 - Fecha1 y obtener el resultado de (1h: 15: m - 1m: 30s) 2000-01-01 01: 13: 45.000. CONVERSALO y tendrás 1:13:45.
tenga en cuenta que el uso de CONVERTIR de esta manera desactivará el uso de índices en la columna de fecha y hora –
Interesante, no estaba al tanto de ese efecto. Gracias por la sugerencia – STW
Para futuros lectores, antes de usar este método, compruebe el comentario realizado por @tvanfosson http://stackoverflow.com/questions/812631/store-time-of-the-day-in-sql?lq=1#comment622411_812669 – Termiux