Как удалить столбцы даты и времени GETDATE () таблицы MSSQL, если они старше одного года, используя PHP

Мой столбец называется order_date, и данные для него:

datetime NOT NULL DEFAULT GETDATE(),

Это приведет к тому, что данные будут выглядеть как:

Apr 8 2014 3:24PM

Мне интересно, какой PHP-запрос я могу использовать для удаления любых строк в этой таблице MSSQL, если им год или больше.

Я также хотел бы проверить, работает ли это. (IE: изменение столбца order_date текущей строки, чтобы сделать его на год старше.)

Если кто-нибудь может мне помочь с этим, я очень признателен. Т


person Kelsey    schedule 08.04.2014    source источник
comment
PHP не имеет отношения к этому вопросу. Это чисто SQL-вопрос ... если вы не генерируете даты последнего года на php, и в этом случае это нечетко связано с php, но все же в основном только для sql.   -  person Marc B    schedule 09.04.2014
comment
Не совсем. Вы можете изменить таблицу SQL через PHP. Например DELETE FROM real_tracking_orders where STR_TO_DATE(order_time, '%M %e, %Y')< DATE_ADD(NOW(), Interval -12 MONTH).   -  person Kelsey    schedule 09.04.2014
comment
да, но это просто sql. это будет ЖЕ sql независимо от того, какой язык вы используете: c, C #, perl, ruby, бла-бла-бла   -  person Marc B    schedule 09.04.2014
comment
Нет, потому что вы тоже используете PHP. Это не просто SQL.   -  person Kelsey    schedule 09.04.2014


Ответы (2)


delete from tracking_orders where DATEDIFF (year, order_date, GETDATE()) > 1

Проверить здесь:

http://technet.microsoft.com/en-us/library/ms189794.aspx

person 779IDEAS    schedule 08.04.2014
comment
Как я могу проверить, работает ли это? В настоящее время все мои строки были созданы сегодня, так что все они в основном Apr 8 2014 3:24PM. - person Kelsey; 09.04.2014
comment
просто измените дату в DATEDIFF и поставьте «час». delete from tracking_orders where DATEDIFF (hour, order_date, GETDATE()) > 1 удалит все записи старше часа - person 779IDEAS; 09.04.2014
comment
Спасибо, это работает. Могу я предложить вам обмен голосами за? - person Kelsey; 09.04.2014

DELETE FROM TABLE_NAME 
WHERE order_date < DATEADD(YEAR, -1, GETDATE())

Этот запрос может использовать индексы, определенные в order_date столбце, если таковые имеются.

person M.Ali    schedule 08.04.2014
comment
Спасибо вам за помощь. Могу я предложить обмен голосами за? - person Kelsey; 09.04.2014
comment
обмен апвоотами? мы сейчас покупаем и продаем голоса? Пожалуйста, не голосуйте за мой ответ, поскольку я не собираюсь голосовать за ваш вопрос.Причина, по которой я не буду поддерживать ваш вопрос, заключается в том, что вы могли бы погуглить его и найти решение там за гораздо меньшее время, чем вам потребовалось, чтобы опубликовать вопрос здесь . Решение, которое я вам дал, лучше, чем решение, которое вы приняли в качестве своего ответа, потому что оно будет использовать любые индексы в вашей таблице. Как бы то ни было, здесь вы не торгуете голосами, лучший ответ привлекает больше внимания и голосов. Спасибо. - person M.Ali; 09.04.2014
comment
Я просто имел в виду, что мы оба получили голос "за". Я думаю, что только то, что информация может быть получена через Google, не делает Stack Overflow последним средством. Хотя я лично пытался использовать Google, чтобы найти этот ответ, и мне не повезло. Я думаю, вы заслужили голосование «за», потому что ваш ответ эффективен. Я считаю, что получил голос "за", потому что мой вопрос актуален и полезен для сообщества, занимающегося переполнением стека. - person Kelsey; 09.04.2014