我正在做的是将当前日期与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命令(如上所述)中,此比较抛出上述异常。什么是可能的解决方案。
答案 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);
}
}