我想在每个月的第一天将数据插入表格中。它必须只是一次。我的意思是每个月的第一天一行。我在PHP文件中使用mySql
完成所有这些。
到目前为止,我得到了这么多 -
if(Date('j')==1)
{
$query = select 1 from table where extract (year from t1) = extract(year from now()) and extract(month from t1) = extract(month from now()) LIMIT 1
if (@mysql_num_rows(mysql_query($query)) == 0)
{
//perform insert operation
}
}
我还没有尝试过这个问题。
答案 0 :(得分:1)
也许这会解决问题
SELECT * FROM xxx WHERE (DATE_FORMAT(CURDATE() ,'%d')==1)
答案 1 :(得分:0)
SELECT DATEADD(mm, DATEDIFF(mm,0,GETDATE())-1,0) as StartOfLastMonth
SELECT DATEADD(mm, DATEDIFF(mm,0,GETDATE()),0) as StartOfThisMonth
SELECT DATEADD(mm, DATEDIFF(mm,0,GETDATE()),0) as StartOfNextMonth
答案 2 :(得分:0)
尝试下面的事件调度程序
CREATE EVENT myevent
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MONTH
DO
"YOUR QUERY"
您必须在1个月的间隔期间运行此日期。
您可以获得有关http://dev.mysql.com/doc/refman/5.1/ja/create-event.html
的更多信息答案 3 :(得分:0)
你可以使用mysql事件调度程序实现 -
http://dev.mysql.com/doc/refman/5.1/en/events.html
CREATE EVENT IF NOT EXISTS `my_old_data_cleaner_event`
ON SCHEDULE EVERY 23 DAY_HOUR
COMMENT 'Clean up Service Start at 11:00PM daily!'
DO DELETE FROM my_table WHERE created_date < (NOW() - INTERVAL 1 MONTH);
存储过程的OR。
CREATE EVENT IF NOT EXISTS `my_old_data_cleaner_event`
ON SCHEDULE EVERY 23 DAY_HOUR
DO CALL my_sp_cleanup_old_data();
答案 4 :(得分:0)
您有两种解决方案,具体取决于您的确切需求。
如果您的数据必须在第一天插入:唯一的方法是使用在正确时间运行的cron作业插入它。如果它只与mysql相关,你可以使用mysql调度程序来完成这项工作。
如果您的数据需要在第一天之后进入表格,但您不关心它是实时添加还是仅在您访问该数据时,那么您不需要cron作业。您可以在访问时检查该数据,然后在读取之前将其插入(如果数据尚未存在)。