2013-04-16 13 views
16

Próbuję uzyskać datę jutrzejszą w oświadczeniu sql dla porównania daty, ale nie działa.Data jutra

Poniżej jest mój kod:

select * 
from tblcalendarentries 
where convert(varchar,tblcalendarentries.[Start Time],101) 
     = convert(varchar, GETDATE() +1, 101) 
+0

co to jest komunikat o błędzie? –

Odpowiedz

28

Aby uzyskać tomorrows datować można użyć poniższy kod, który będzie dodać 1 dnia do aktualnej daty systemowej:

SELECT DATEADD(day, 1, GETDATE()) 

GETDATE()

Zwraca bieżący datownik systemowy bazy danych jako wartość datetime bez przesunięcia strefy czasowej bazy danych. Ta wartość pochodzi z systemu operacyjnego komputera, na którym działa instancja SQL Server.

DATEADD(datepart , number , date)

Zwraca określoną datę w określonym przedziale czasu (podpisane liczba całkowita) dodaje się do określonego DatePart tej dacie.

więc dodanie tego do kodu w klauzuli WHERE:

WHERE CONVERT(VARCHAR, tblcalendarentries.[Start Time], 101) = 
     CONVERT(VARCHAR, DATEADD(DAY, 1, GETDATE()), 101); 

pierwsze, GETDATE() będzie Ci dzisiejszą datę w następującym formacie:

2013-04-16 10:10:02.047 

Następnie za pomocą DATEADD(), pozwala należy dodać (lub odjąć w razie potrzeby) datę lub przedział czasu od określonej daty. Tak więc odstęp może wynosić: rok, miesiąc, dzień, godzina, minuta itd.

Praca z strefami czasowymi?

Jeśli pracujesz z systemami, które przejeżdżają przez strefy czasowe, można również rozważyć użycie GETUTCDATE():

GETUTCDATE()

Zwraca aktualny timestamp systemu baz danych jako wartość datetime. Przesunięcie strefy czasowej bazy danych nie jest uwzględniane. Ta wartość reprezentuje aktualny czas UTC (Coordinated Universal Time). Ta wartość pochodzi z systemu operacyjnego komputera, na którym działa instancja SQL Server.

-2

Myślę, że jeśli dodasz jeden do daty, poda datę następnego dnia.

DATE+1 

To powinno być w porządku.Niestety nie mam dostępu do kodu SQL Server tutaj, aby udostępnić kod

2

Określ rozmiar varchar w convert()

where convert(varchar(11),tblcalendarentries.[Start Time],101) = convert(varchar(11), GETDATE() +1, 101) 
4

Spróbuj poniżej:

SELECT GETDATE() + 1 

Dodaje jeden dzień aktualnej daty

0

Chciałbym napisać:

where 
    DATEADD(day,DATEDIFF(day,0,tblcalendarentries.[Start Time]),0) = 
    DATEADD(day,DATEDIFF(day,0,GETDATE()),1) 

Pozwala to całkowicie uniknąć konwersji dat na ciągi, jednocześnie usuwając część czasu z obu wartości.