在比较数据库

时间:2016-10-20 12:24:38

标签: c# mysql datetime phpmyadmin

我正在做的是将当前日期与MySql数据库(PhpMyadmin)中的表'permanent_days'中的'date'字段(具有特定日期)进行比较。该“日期”字段的数据类型是datetime。我的源代码如下:

double sum = previous_total + 0.5;
query = "UPDATE permanent_days SET total_days='"+sum+"' WHERE emp_id_fk='"+_ID+"' AND date LIKE '"+DateTime.Now.ToString("yyyy-MM")+"%'";
command = new MySqlCommand(query, connection, transaction);
command.ExecuteNonQuery();

执行此代码后,我遇到以下异常:

  
    

错误:日期时间值不正确:'第10行第9行的日期'2016-10%

  

请注意,使用“Select”sql命令时,此比较可正常工作。但是,在'Update'sql命令(如上所述)中,此比较抛出上述异常。什么是可能的解决方案。

2 个答案:

答案 0 :(得分:0)

您需要先将日期时间转换为字符串,然后才能使用LIKE

您可以使用Convert() and Cast()。但更好:

WHERE  DATE_FORMAT(dateColumn, '%Y-%m-%d') LIKE '2016-10-%'

请参阅this answer

答案 1 :(得分:0)

>之类的东西怎么样? DateTime.Now.Date.AddDays(1-DateTime.Now.Day)?

#define THRESHOLD 50

// regular insertion sort
void isort(int *array, size_t n) {
  int key, i, j;
  for(j = 1; j < n; j++){
    key = array[j];
    i = j - 1;
    while (array[i] > key && i>=0) {
      array[i + 1] = array[i];
      i--;
    }
    array[i + 1] = key;
  }
}

// modified quick sort
static void sort(int *array, int start, int end) {
  if (end - start > THRESHOLD) {
    int pivot = array[start];
    int l = start + 1;
    int r = end;
    while(l < r) {
       if (array[l] < pivot) {
          l += 1;
       } else if ( array[r] >= pivot )  {
          r -= 1;
       } else {
          swap(&array[l], &array[r]);
       }
    }
    if (array[l] < pivot) {
      swap(&array[start], &array[l]);
      l -= 1;
    } else {
      l -= 1;
      swap(&array[start], &array[l]);
    }

    sort(array, start, l);
    sort(array, r, end);
  } else {
    isort(array, end - start + 1);
  }
}