- ベストアンサー
datetime型で日付計算ができません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
date_add(start_date, interval 20 day) < now() これでできませんかね。
関連するQ&A
- MySQLのDatetime型の引き算
ある機械の1日当たりの処理数を計算したいと思います。 Datetimeの引き算がうまくいかないので、解決方法を教えてください。 1日当たりの処理数は下記の式で計算できます。 1日当たりの処理数=期間内処理数÷((現在日時-作業開始日時)÷(60×60×24)) ※現在日時-作業開始日時で期間の秒数を計算 それを1日の秒数=86400秒(60秒×60分×24時間)で割る。 ------------------ 環境 MySQL:5.0.77 ------------------ テーブル: test カラム :num(INT型),start_date(DATETIME型) ※numは期間内の機械の処理数です。 まず、上記の1日当たりの処理数の数式をSQL文に反映させてみました。 SELECT num , num/((now()-start_date)/86400) as shorisu FROM test 結果は表示されるのですが、かなり大きな数値になって出てきてしまいます。 WEBで情報を検索したところ、DATETIME型を直接減算すると求める結果にならないことはわかりました。 MySQLのページ(11.5. 日付時刻関数) http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html を見てみましたが、どの関数を使えばよいのかいまいちわかりません。 now()-start_dateの部分が正しい値を返すようになれば良いのですが、どのような式を書けばよいのでしょうか?
- ベストアンサー
- PHP
- MySQLのDatetime型の検索方法
MySQLのDatetime型で 時間部分が00:00:00のデーターだけを抽出する方法を教えてください。 MySQLのデータ(列:Datetime型) 2011-12-01 00:00:00 2011-12-01 20:15:45 2011-12-01 20:46:45 2011-12-02 00:00:00 2011-12-02 11:11:11 2011-12-03 22:22:22 2011-12-04 00:00:00 このようなデータの中から時間部分が「00:00:00」のものを抽出したいと思います。 求める結果は 2011-12-01 00:00:00 2011-12-02 00:00:00 2011-12-04 00:00:00 です。 期間で抽出するのであれば SELECT * FROM `テーブル名` WHERE date>='2012/12/05 00:00:00' AND date<='2012/12/07 23:59:59' のようなクエリで良いと思うのですが、「00:00:00:」が含まれるものだけを抽出しようと思うとうまくいきません。 LIKE 00:00:00 でできるかもしれないと思いましたがダメでした。
- ベストアンサー
- MySQL
- 24時間以内に更新されたデータを取得
MySQL3で24時間に更新されたデータを取得したいのですが、いまいち方法が分かりません。 select * from test WHERE to_days(now()-60*60*24) > UpdataDate このような形では無理なようなのですが、いい方法はあるでしょうか? UpdataDateはdatetime型です。 よろしくお願いします。
- ベストアンサー
- MySQL
- MySQLのDateTimeにPHPで値セットは?
初歩的な質問ですみません。 MySQLにとあるテーブルがあって、 その中に 更新日時 という DATETIME 型のフィールドがあるのですが、 insert でレコードを追加する際にそこに現在日時をセットしようとして、 恥ずかしながらその方法がわかりません。 $sql = sprintf('INSERT INTO %s SET %s="%s", %s="%s"', 'tmp', 'mailAddr', e($mailAddr), 'update', date('Y/m/d H:i:s')); mysql_query($sql); とか、 $sql = sprintf('INSERT INTO %s SET %s="%s", %s=cast(now() as datetime)', 'tmp', 'mailAddr', e($mailAddr), 'update'); mysql_query($sql); とか、いろいろ調べて試してみたんですけど...。 上記のように、insert into xxx set~ を使う場合を知りたいです。 すみません。 よろしくお願いします。
- ベストアンサー
- PHP
- 日付検索で0000-00-00 00:00:00を除外したい
日付検索で0000-00-00 00:00:00を除外したい mysql5.0 データ型はdatetimeで日付検索をしたのですが、 日付が"0000-00-00 00:00:00"で登録されているデータも 検索結果に表示され困っています。 例えば、 SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') →これだと、hizukeが0000-00-00 00:00:00のデータも表示されてしまいます。 日付が0000-00-00 00:00:00で登録されているデータを除外するため 自分もいろいろしてみたのですができません。どなたか教えていただけないでしょうか。 参考までに、自分が試したsql文を書きます。↓ SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') and (hizuke != '0000-00-00 00:00:00') SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') and (hizuke <> '0000-00-00 00:00:00') SELECT * FROM user_tbl WHERE (DATE( hizuke ) <= '20100505') and (hizuke not in ('0000-00-00 00:00:00')) →上記載のsqlはすべて検索件数が0になってしまいました。 もうわからなくなってしまったので、アドバイスお願いします。
- ベストアンサー
- MySQL
- MySQLでTIMESTAMP型の列から現在日付の1週間以内のデータ検索をSQL文で
タイトルの通りですが、MySQLのSELECT文についてです。 以下のようなテーブルがあったとします。 MEMBER{ ID SMALLINT M_DATE TIMESTAMP} このテーブルのM_DATEが現在の日付から一週間以内であるレコードの検索を以下のようなSQL文で実行しました。 SELECT * FROM MEMBER WHERE M_DATE BETWEEN (NOW() - 00000000070000) AND NOW(); 最初はこれでOKだと思っていたのですが、月をまたいだりした時に抽出されるべきではないレコードが表示されるので間違いに気付いたのですが、どう修正すべきなのか分からない状況です。 どなたか良い方法があれば、教えて頂きたいです。 よろしくお願いします。
- ベストアンサー
- MySQL
- nvarcharとdatetimeで作成された日付の抽出方法について
SQL Server 2005 EXPRESSを使って、 nvarchar型で作成されたyyyy/mm/ddの日付と datetime型で作成されたyyyy/mm/ddの日付を比較し WHERE '2007/05/04' > gettime()のようなSELECT文の WHERE句を使って該当レコードを表示することが可能であれば 教えてください。 以上、宜しくお願いします。
- ベストアンサー
- SQL Server
- VB5.0+SQL-Server7で日付を条件とした検索がうまくいかない。
【やりたい事】 XXXTBLのDATE1が今日より前のレコードを読みたい。 SQL-ServerのDATE1属性は「datetime」です。 【やってみた事1】 Dim wk_Today As Date wk_Today = Date SQLText = " select *" & _ " From XXXTBL" & _ " Where DATE1 < " & "#" & wk_Today & "#" 【結果1】 実行時エラー 3146 ODBC呼び出しが失敗しました。 【やってみた事2】 Dim wk_Today As Date wk_Today = Date SQLText = " select *" & _ " From XXXTBL" & _ " Where DATE1 < " & wk_Today 【結果2】 該当データなし。 (条件に合致するレコードを作っておいたのに) 【やってみた事3】 SQLText = " select *" & _ " From XXXTBL" & _ " Where DateDiff('d',DATE1," & "#" & Date & "#" & ") > 0 " 【結果3】 読めました。 【質問】 なぜ、1と2は駄目だったのでしょうか? 1か2の方法でできた方が素直な感じがするのですが。 VBにもSQL-Serverにも精通しておらず、つたない 質問で申し訳ありませんが、不足する情報は補足しま すので、ご教授お願いいたします。
- ベストアンサー
- Visual Basic
- select文について
現在、"user"というテーブルに"id"と"date(datetime)"という項目があり、その"date"にあるデータの中から月を指定して抽出したくて以下ようなSQL文を書いたのですがうまくいきません。 SELECT `id` FROM `user` WHERE convert((SELECT extract(month from `date`) FROM `user`), INTEGER) = 9 mysql5.0です。 よろしくお願いします。
- ベストアンサー
- MySQL
- 行のカウントを2種類を1つの文で発行したい
こんにちは質問させてください。 商品が登録されているテーブル A に以下のカラムがあるとします。 id(int), name(varcahr), dt(datetime) id には 店を識別す固有の番号がふってあり、 name には 商品名、 dt には商品を登録した日付が入っているものとします。 やりたいことは ”id が 「1」 である全商品数” と ”今月登録された商品の数” を出力したいのです。 id が 1 である商品の数は以下のSQLで取り出せます。 SELECT COUNT(*) FROM ( SELECT * FROM A WHERE A.id='1' ) AS tbl1 id が 1 で 今月登録された商品の数は以下のSQLで取り出せます。 SELECT COUNT(*) FROM ( SELECT * FROM A WHERE A.dt BETWEEN DATE( DATE_SUB( NOW(), INTERVAL DAYOFMONTH( NOW() )-1 DAY) ) AND LAST_DAY( NOW() ) AND A.id='1' ) AS tbl1 これをひとつのSQLにまとめるにはどうしたらいいのでしょうか…。 宜しくお願い致します。
- ベストアンサー
- MySQL
お礼
ありがとうございます。 あれからSMARTというサイトで結構情報が事が書いてあり解決できました。