2016-03-09 43 views
-2

有什麼方法可以刪除數據庫中的某些字符?我的日期字符串如「2016-03-09」,我想刪除去年的這些日期:(2016-1)。 Iam使用C#和MySQL來檢索和存儲數據。某一特定年份刪除數據庫列中的某些字符

+0

我不明白你如何爲你的例子獲得'2016-1'。你可以請更具體嗎? –

+0

我有一個預訂系統應用程序,人們可以預訂一個時間,存儲在數據庫中,並且想要刪除存儲在我的分區中去年的所有數據 – Sivar

+0

是否要更改數據庫中的數據?爲什麼?爲什麼不只是查看你想要的數據?或者你是否想根據某個日期範圍從數據庫中刪除條目? – roadrunner66

回答

-1

刪除記錄可以使用YEAR函數來完成:

-- Delete records for a specific year 
DELETE FROM my_table WHERE YEAR(date_col) = 2015; 

請確保您有一個活動數據庫上運行的任何刪除之前有備份。

+0

日期存儲爲字符串,例如:「2016-03-09」例如 – Sivar

+0

您應該將日期存儲爲日期,但是'YEAR(a_string)'將起作用:'SELECT YEAR(「2016-03-09」); '返回「2016」。 – Jim

+0

示例:http://sqlfiddle.com/#!9/9eecb7d/48477 – Jim

0

這是不是很清楚你的意思。但是基於字符串值的數據庫中刪除記錄可以與LIKE命令來完成:

DELETE FROM my_table WHERE date_col LIKE '2016-__-__' 

的下劃線是任何字符通配符。所以2016年的所有日期都會匹配。

1

我有幾點建議;

我有一個日期作爲字符串一樣..

爲什麼?爲什麼您將DateTime的值存儲爲string?您應該始終使用正確的數據庫類型作爲變量。將您的列類型更改爲datetime,並保留您的DateTime值,而不是其字符串表示。

閱讀:Bad habits to kick : choosing the wrong data type

然後你就可以執行刪除您的命令,去年其發送像一個參數;

using(var con = new MySqlConnection(conString)) 
using(var cmd = con.CreateCommand()) 
{ 
    cmd.CommandText = @"delete from yourTableName 
         where YEAR(yourColumnName) = @year"; 
    cmd.Parameters.Add("@year", MySqlDbType.Int).Value = DateTime.Now.Year - 1; 
    con.Open(); 
    cmd.ExecuteNonQuery(); 
}