2011-09-09 8 views
0

フィールドがtimeouttimeinのテーブルがあります。別の日にtimeoutがあるレコードのリストをtimeinに返す必要があります。どうすればこれを達成できますか?その後、SQLクエリ:SQL DateTimeから 'day'値を見つける

select * 
from table 
where DAY(timeout) <> DAY(timein0) 

または

select * 
from table 
where DATEPART(day,timeout) <> DATAPART(day,timein) or 

が動作します。..

場合は、しかし、彼らは異なるヶ月であることができ、:両方の日付は、その後、同月内にある場合

答えて

3

あなたは完全な日付を比較する必要があります。これはあなたのためにそれを行う必要があります。これについて

select * 
from table 
where DATEDIFF(day,timeout,timein) <> 0 
+1

次の日の時間NOTEをしたい場合:これらの例はどちらも "与えます月の日 "と呼ばれる。 1月1日から2月1日になるデータがある場合、この方法は失敗します。極端な問題や問題のあるケースであっても、(可能な限り)* 1ヶ月に一度もデータを伸ばさない*保証*することができます。 DATEDIFF *のさまざまな使用方法はこの問題の影響を受けません。 – MatBailie

+0

fair point、answer updated – StevieG

+0

私はまだ他の答えも残しておきますが、その動作に注意してください。 DAY(タイムアウト)<>データが適切に動作する場合、DAY(timein)はきれいです。 – MatBailie

0

方法:

select * 
from table 
where day(timeout) != day(timein); 
+0

なぜSQL-Serverの質問にMySQLリンクを投稿しますか? – MatBailie

+0

@Dems Edited ... –

+0

この構文はmssqlでも有効です。問題はそれが月と年を比較していないことです –

1
select * 
from table_name 
where datediff(dd,timein,timeout) > 0 (for day in greater then today) 

を出し、その後

select * 
from table_name 
where datediff(dd,timein,timeout) =1 
+1

または、OPを "別の日に"句を使用して、 '<> 0' – MatBailie

関連する問題