0

SQL Server の日付レコードをシステム日付と比較しようとしています。私の例では、ユーザーは最初に自分の名前と生年月日で登録し、データベースに保存します。ユーザーは自分の名前のみを使用して Web アプリケーションにログインします。ログイン後、彼の名前は"Welcome "player name「を使用して」と書かれた側に表示されSessionsます。

彼の名前に加えて表示しようとしているのは、彼の生年月日がシステムの日付と一致する場合に「お誕生日おめでとう」というメッセージです。で作業してみましたSystem.DateTime.Nowが、年も比較していると思いますが、本当に欲しいのは日と月だけです。提案や助けをいただければ幸いです。

ログインページのコード:

protected void Button1_Click(object sender, EventArgs e)
{
  String name = TextBox1.Text;
  String date = System.DateTime.Today.ToShortDateString();
  SqlConnection myconn2 = new 
    SqlConnection(ConfigurationManager.ConnectionStrings["User"].ToString()); 

  SqlCommand cmd2 = new SqlCommand();
  SqlDataReader reader;

  myconn2.Open();
  cmd2 = new SqlCommand("Select D_O_B from User WHERE Username = @username", 
                        myconn2);
  cmd2.Parameters.Add("@username", SqlDbType.NVarChar).Value = name;
  cmd2.Connection = myconn2                           
  cmd2.ExecuteNonQuery();
  reader = cmd2.ExecuteReader();
  while (reader.Read().ToString() == date)
  {
    Session["Birthday"] = "Happy Birthday";
  }
}

注: 上記のコードで同じリーダーを使用していますが、ここのリーダーは別の接続を使用しています。また、reader.Read()とは異なりreader.HasRowsますか?

Web アプリ ページのコード:

string date = (string)(Session["Birthday"]); // Retrieving the session
Label6.Text = date; 
4

3 に答える 3

1

上記の日付をこれと比較するためにコードフラグメントを置き換えることができます

object dobVal = null;
while ((dobVal= reader.Read()) != null)
{
  var storedDob = Convert.ToDateTime(dobVal.ToString());

  if(storedDob.Month == DateTime.Now.Month && 
     storedDob.Day == DateTime.Now.Day)
  {
    Session["Birthday"] = "Happy Birthday";
  }
}
于 2012-04-14T23:24:09.903 に答える
1

ExecuteNonQuery() および ExecuteReader() の代わりにExecuteScalarを使用します。データベースの D_O_B 列が datetime の場合、結果を DateTime にキャストできます。D_O_B 列が varchar (または類似のもの) の場合、DateTime.Parse() を使用して文字列を DateTime に変換する必要があります。次に、DateTime インスタンスの Day 部分と Month 部分を比較します。

DateTime DOB = (DateTime)cmd2.ExecuteScalar();
DateTime Today = DateTime.Now;
if (Today.Month == DOB.Month && Today.Day == DOB.Day)
{
    //Happy Birthday
}
于 2012-04-14T23:33:06.013 に答える
0

2つの方法、SQL内で、添付のページを参照として使用して、月と日の日付を比較できます。

sql date compare(やりたいことには悪い方法)

2)着信文字列を日時にキャストし、system.datetime.monthおよびsystem.datetime.dayをSQL C#からキャストされた日時と比較することができます。

私は方法2をすることを選びました

于 2012-04-14T23:22:28.263 に答える