2017-11-13 5 views
0

私は毎日MYSQLdbからデータを照会する必要があります。そのため、私は実際の日付 - 1データを照会できる照会を使用する方が好きです。たとえば、11月13日にスクリプトを実行すると、11月12日(ACTUAL_DATE - 写真上)のすべての情報が必要になります。私はこのようになりますのMySQLdbの列、持っている"date-1"というクエリが必要な場合、Python2.7でMYSQLdbのデータをクエリする方法は?

は、これは任意のクエリです、これはこれで、データを照会するための任意のチャンスである「DATE - 1」ロジック?したがって、ACTUAL_DATE列の最後の6文字を分析する必要があります。なぜなら、最後の2日は1日、最後の4日は月(年は重要ではありません)ですからです。

このMYSQLdbは毎日リフレッシュするので、 1日目にこのテーブルからREAL DATEを問い合せる方法を見つけることができます。

私は、コードは次のように見ているに持って知っている:

connection = MySQLdb.connect(host='localhost', 
     user='user1', 
     passwd='', 
     db='database1', 
     use_unicode=True, 
     charset="utf8") 
cursor = connection.cursor() 
query = """ select #I NEED SOMETHING HERE.. 
    from OSSZES 
    into outfile '/tmp/test.csv' 
    fields terminated by ';' 
    enclosed by '"' 
    lines terminated by '\n'; 
    """ 
cursor.execute(query) 
connection.commit() 
cursor.close() 

しかし、どのように、それはMySQLdbは内に存在している場合、私は、この選択クエリを書くことができますか?

+1

をDATEまたはDATETIMEデータ型を、外見を使用する代わりに使用します。 VARCHARデータ型と同様です。 'SELECT * FROM [table] WHERE [column] = NOW() - INTERVAL 1 DAY'を使用することができます。 –

+0

NOW()を使用している場合は、現在の日付と時刻を返します。私のACTUAL_DATEは? – Harley

+0

iveは答えを掲載しました。 –

答えて

1

STR_TO_DATE関数を使用して、VARCHAR形式をDATETIME形式にフォーマットすることができます。

クエリ

SELECT 
* 
FROM ( 
    # test data replace this with your table name 
    SELECT 
    'Sunday, Nov 12' AS A 

    UNION ALL 

    SELECT 
    'Saturday, Nov 11' 
) 
AS records 
WHERE 
    MONTH(STR_TO_DATE(A, '%W, %b %d')) = MONTH(NOW()) 
AND 
    DAY(STR_TO_DATE(A, '%W, %b %d')) = DAY(NOW()) - 1 

結果

A    
---------------- 
Sunday, Nov 12 
+0

これは3つの選択クエリですか?または、Pythonコードをどのように見ているのですか?自分のコードでコードを更新できますか? – Harley

+0

置き換え 'あなたのテーブル名を持つレコード' AS ( #テストデータは UNION AS '11月12日(日曜日)' を選択し あなたのテーブル名を持つすべての SELECT '11月11日(土曜日)' これを交換してください)。私はPythonコードを書くことができないので、Pythonコードで助けてください。 –

+0

これは私にとっては良いソリューションではありません。なぜなら、これで1日しか分析できないのですが、私は毎日自分のコードを上書きしないでこれをやりたいのです。なぜ私はNOW()をACTUAL_DATE列 – Harley

0

たぶん、あなたは 'パンダ' と '日時' モジュールの組み合わせを使用することができます:あなたが使用している場合

import datetime as dt 
import pandas as pd 

df = pd.read_sql_table('OSSZES',connection) 
df['ACTUAL_DATE'] = pd.to_datetime(df['ACTUAL_DATE']) 
mask = df['ACTUAL_DATE'] < dt.date.today() 
df_new = df.loc[mask] 
df_new.to_csv('/tmp/test.csv') 
関連する問題