Using MySQL syntax and having a table with a row like:
mydate DATETIME NULL,
Is there a way to do something like:
... WHERE mydate<='2008-11-25';
I'm trying but not really getting it to work.
ええと、それWHERE mydate<='2008-11-25'
を行う方法です。それはうまくいくはずです。
エラーメッセージが表示されますか?古いバージョンのMySQLを使用していますか?
編集:以下はMySQL5.xで私にとってうまく機能します
create temporary table foo(d datetime);
insert into foo(d) VALUES ('2000-01-01');
insert into foo(d) VALUES ('2001-01-01');
select * from foo where d <= '2000-06-01';
標準の SQL 構文では、次を使用します。
WHERE mydate <= DATE '2008-11-20'
つまり、キーワード DATE を文字列の前に置く必要があります。ただし、一部の DBMS では、それほど明示的である必要はありません。システムは DATE 列を文字列に、または文字列を DATE 値に自動的に変換します。DATE が文字列に変換される場合、名目上いくつかの興味深い意味があります。最初の千年紀 (0001-01-01 .. 0999-12-31) の日付があり、先頭のゼロが省略されている場合フォーマットシステム。
気にしないで答えを見つけました。喜んで返信する人にも同じことを言ってください。
WHERE DATEDIFF(mydata,'2008-11-20') >=0;
時間コンポーネントを追加できます
WHERE mydate<='2008-11-25 23:59:59'
ただし、mydate が「2008-11-25 24:59:59」の場合、DST の切り替え日に失敗する可能性があるため、次の日付の前にすべてを取得するのがおそらく最も安全です。
WHERE mydate < '2008-11-26 00:00:00'
問題は、日付だけでなく、DATETIMEデータを処理していることである可能性があります。行に「2008-11-2509:30AM」のmydateがある場合、WHERE mydate <= '2008-11-25'; その行は返されません。'2008-11-25'の暗黙の時刻は00:00(真夜中)であるため、日付の部分は同じですが、等しくなく、mydateの方が大きくなります。
<='2008-11-25'の代わりに<'2008-11-26'を使用すると、それは機能します。Datediffメソッドは、日付部分のみを比較し、時刻を無視するため、機能します。