sql >> データベース >  >> RDS >> Mysql

生成された日付リストとのテーブル日付列の比較-MYSQL

    2回目の更新:

    これで、すべてのバージョンで機能するようになりました:

    select
    *
    from
    Payroll
    inner join 
    (
    SELECT DATE(DATE_ADD('2012-10-05', 
    INTERVAL @i:[email protected]+14 DAY) ) AS dateP
    FROM Payroll, (SELECT @i:=0) r
    where @i < DATEDIFF(now(), date '2012-10-05') 
    ) sq on Payroll.datestamp = sq.dateP
    

    クエリ内で変数を初期化する必要があります。

    更新:

    奇妙なことに、これは私のローカルマシン(バージョン5.1.41-3ubuntu12.7-log)で問題なく動作しますが、SQLfiddleでは動作しません。

    set @i:= 0;
    select
    *
    from
    Payroll
    inner join 
    (
    SELECT DATE(DATE_ADD('2012-10-05', 
    INTERVAL @i:[email protected]+14 DAY) ) AS dateP
    FROM Payroll
    where @i < DATEDIFF(now(), date '2012-10-05') 
    ) sq on Payroll.datestamp = sq.dateP
    

    更新の終了

    このように試しましたか?

    set @i:= 0;
    
    SELECT distinct datestamp FROM payroll
    WHERE STR_TO_DATE(datestamp, '%M, %d %Y %H:%i:%f') in (
    SELECT DATE(ADDDATE('2012-10-05', 
    INTERVAL @i:[email protected]+14 DAY) ) AS dateP
    FROM payroll
    where @i < DATEDIFF(now(), date '2012-10-05') 
    )
    ;
    

    私の推測では、DATE() 関数が失敗します。varcharになります (そうですか?)日付はISO形式ではありません。したがって、STR_TO_DATE()を使用する必要があります 機能。

    STR_TO_DATE()の正確な使用法について こちらをお読みください およびこちら> 。マイクロ秒の部分についてはよくわかりません。




    1. JDBCを使用してMySqlデータベースに接続する方法

    2. 64ビットマシンで32ビットモードでOracleClientを実行する

    3. php mysql group by date with yyyy-mm-dd format

    4. SQLServer2000で@TABLEEXEC@queryに挿入