簡體   English   中英

字符串日期比較C#

[英]String date comparison C#

我有一個從MySQL數據庫提取日期的應用程序(字符串格式:2000年1月1日)。 我需要將此數據與在TextBox中輸入的日期進行比較。

這是我到目前為止所擁有的:

String query = "select * from tb_demographic_data where date_of_birth LIKE '%" +
       txb_startDate.Text + "' OR (str_to_date(date_of_birth,'%d,%b,%Y') <= 
       str_to_date('"+txb_startDate.Text+"','%d,%b,%Y'))

當我運行查詢時,沒有任何結果。 我的sql代碼沒有問題。 我認為使用str_to_date()將字符串更改為日期時會發生錯誤。 有人可以幫忙嗎?

不要對日期進行字符串比較。 將數據庫中的列更改為日期,並使用參數化語句或類似方法更新查詢以接受日期值。

看來您的日期格式有誤... '%d,%b,%Y'表示分隔符為逗號。 我可以想象你想要像'%d-%b-%Y'

正如Nikhil指出的那樣,讓用戶在日期/日歷/時鍾控件中輸入日期通常是更好的選擇。 另外,我強烈建議不要從文本框中獲取用戶輸入,而只是將其粘貼到SQL字符串中。 這導致SQL 注入

我建議您或者使用上面推薦的控件之一來讓用戶指定特定的DateTime ,或者將文本框中的數據轉換為DateTime對象 假設您正在使用DbCommand對象運行查詢,然后可以使用參數化查詢並將DateTime作為參數傳遞,而不是直接將其放入命令中。 您的SQL可能如下所示:

select * from tb_demographic_data
where date_of_birth <= @startDate

然后,您必須在DbCommand添加一個ParameterName"@startDate"DbParameter並添加一個DateTime對象的Value

我想到了。 我確信這不是執行此操作的最有效方法,但是我對此並不陌生。 在這里:我只是將兩個字符串解析為日期,然后計算了它們之間的日期差。 如果答案是肯定的,則第一個日期在第二個日期之前,反之亦然

select * from tb_demographic_data 
where date_of_birth 
    LIKE '%" + txb_startDate.Text + "' 
    OR (datediff(str_to_date('" + txb_startDate.Text + "', 
                             '%d-%b-%Y'), 
                 str_to_date(date_of_birth,
                             '%d-%b-%Y'))>=0) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM