Tens uma boa noticia e uma má noticia...
A má é que no SQLServer quer seja um campo de DateTime, quer seja SmallDateTime, ele guarda-te sempre um valor para dia e outro para hora.
Quando não inseres a data, por defeito o SQLServer guarda-te a data 1/1/1900; quando nao inseres a hora, ele guarda-te 12:00:00 (se não estou em erro).
A boa noticia é que para fazeres pesquisas especificas só por dia ou hora, tens duas formas - uma delas já puseste na thread:
SELECT whatever FROM table WHERE data >x AND data < y
Podes sempre também usar o DATEPART para ires buscar datas especificas:
... WHERE DATEPART(day, data) = x AND DATEPART(month, data) = y AND DATEPART(year, data) = z
Uma coisa que só descobri há cerca de 2 semanitas, é que tb há formas de pesquisares apenas pela data ou pela hora sem teres de usar o DATEPART.
"So, you have two different columns, one for date & another one
for time. Assuming both columns are datetime datatypes, try:
INSERT yourTable(DateColumn, TimeColumn)
SELECT CONVERT(VARCHAR, GetDate(), 101),
CONVERT(VARCHAR, GetDate(), 108)
Note that SQL Server will do an implicit conversion of the VARCHAR
values into datetime values. If you 'must' make the datetime values
try:
INSERT yourTable(DateColumn, TimeColumn)
SELECT CAST(CONVERT(VARCHAR, GetDate(), 101) AS DATETIME),
CAST(CONVERT(VARCHAR, GetDate(), 108) AS DATETIME)
--
- Anith"
OU
"Check this out
/****************/
Date :
select convert(varchar(10),getdate(), 104)
Time :
select convert(varchar(10),getdate(), 108)
/****************/"
Encontrei isto nos grupos do google, tive a procura nos BOL e nao encontrei explicacao nenhuma para o que é isto - mas o que é certo é que funciona...
Espero ter conseguido ajudar em alguma coisa
Jinhos
Ophelia