17

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.

4

5 に答える 5

26

ええと、それ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';
于 2008-11-25T22:33:27.670 に答える
12

標準の SQL 構文では、次を使用します。

WHERE mydate <= DATE '2008-11-20'

つまり、キーワード DATE を文字列の前に置く必要があります。ただし、一部の DBMS では、それほど明示的である必要はありません。システムは DATE 列を文字列に、または文字列を DATE 値に自動的に変換します。DATE が文字列に変換される場合、名目上いくつかの興味深い意味があります。最初の千年紀 (0001-01-01 .. 0999-12-31) の日付があり、先頭のゼロが省略されている場合フォーマットシステム。

于 2008-11-25T22:55:33.460 に答える
12

気にしないで答えを見つけました。喜んで返信する人にも同じことを言ってください。

WHERE DATEDIFF(mydata,'2008-11-20') >=0;
于 2008-11-25T19:33:48.903 に答える
2

時間コンポーネントを追加できます

WHERE mydate<='2008-11-25 23:59:59'

ただし、mydate が「2008-11-25 24:59:59」の場合、DST の切り替え日に失敗する可能性があるため、次の日付の前にすべてを取得するのがおそらく最も安全です。

WHERE mydate < '2008-11-26 00:00:00'
于 2008-11-26T06:17:20.663 に答える
0

問題は、日付だけでなく、DATETIMEデータを処理していることである可能性があります。行に「2008-11-2509:30AM」のmydateがある場合、WHERE mydate <= '2008-11-25'; その行は返されません。'2008-11-25'の暗黙の時刻は00:00(真夜中)であるため、日付の部分は同じですが、等しくなく、mydateの方が大きくなります。

<='2008-11-25'の代わりに<'2008-11-26'を使用すると、それは機能します。Datediffメソッドは、日付部分のみを比較し、時刻を無視するため、機能します。

于 2008-11-26T06:50:22.550 に答える