我怎样才能以“30-jun-2013”格式获取日期
在运行时如果用户在文本框中输入上述格式,则会获取指定日期的匹配数据行并对其进行过滤并在datagridview中显示
所以我希望将日期格式与文本框中输入的文本进行比较
string todaydate = Convert.ToString(DateTime.Today);
DateTime DTM = Convert.ToDateTime(todaydate);
string datetoday = DTM.ToString("dd-MMM-yyyy");
if (TypeHereTextBox.Text == datetoday)
{
OLCMND2 = new OracleCommand("Select * from TABLENAME where DATE = '" + typeHereTextBox.Text + "'", CON);
OADAP1 = new OracleDataAdapter(OLCMND2);
OADAP1.Fill(DTBLE2);
DatagridView.DataSource = DTBLE2;
}
如何解决
答案 0 :(得分:1)
嗨,我得到了解决方案的人
string[] arrayData = TextBox.Text.Split('-');
if (arrayData.Length == 3)
OLCMND2 = new OracleCommand("Select VISITORCOUNT,REMARKS,to_date(to_char(TODAYDATE, 'DD-MON-YYYY'),'DD-MON-YYYY') AS TODAYDATE,CARDNUMBER,PHOTO from VMS_VISITOR where TODAYDATE = TO_DATE('" + TypeHereTextBox.Text + "','dd-MON-yyyy')", CON);
OADAP1 = new OracleDataAdapter(OLCMND2);
OADAP1.Fill(DTBLE2);
DatagridView.DataSource = DTBLE2;
感谢所有回复人员
答案 1 :(得分:0)
首先你要进行字符串比较,这意味着你要比较引用。请使用
if (TypeHereTextBox.Text.Equals(datetoday))
代替。
第二,为什么不比较dateTime而不是字符串呢?
因为您的数据无论如何都不是有效日期,因此您无法使用ParseExact
或TryParseExact
,但您可以使用任何有效日期:
DateTime d;
DateTime.TryParseExact(date, "dd-MMM-yyyy", System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.NoCurrentDateDefault, out d);
if (d== DTM)
答案 2 :(得分:0)
这将从该格式解析:
var dateToParse = "30-Jun-2013"; //TypeHereTextBox.Text
var parsedDate = DateTime.ParseExact(dateToParse, "dd-MMM-yyyy", CultureInfo.InvariantCulture);
if (parsedDate.Date == datetoday.Date)
{
// Do stuff
注意 - 六月只有30天;)
答案 3 :(得分:0)
最好的方法是与今天的日期分别检查日期月份和年份。如果匹配,则以所需格式连接日期月份和年份并传递给查询。
答案 4 :(得分:0)
您需要解析日期,已经提出了类似的问题。
答案 5 :(得分:0)
我不会将日期作为字符串进行比较,通过给出日期时间格式字符串,使用DateTime.ParseExact
将字符串转换为DateTime。然后比较两个日期时间对象而不是字符串比较。
我还会使用参数将Date列值设置为
OLCMND2 = new OracleCommand("Select * from TABLENAME where DATE = :dateVal", CON);
OLCMND2.Parameters.Add("dateVal", OracleDbType.Date
, myDatetime, System.Data.ParameterDirection.Input);