current_date施法

时间:2010-04-16 07:49:26

标签: mysql datetime

string selectSql = "update " + table + " set state_" + mode + "_id=1 WHERE stoping_" + mode + " < current_date;";

当我致电current_date时,它会返回yyyy-MM-dd格式,但我想返回dd.MM.yyyy格式,我该怎么做呢。请帮忙。我正在尝试

时,我的程序运行正常
string selectSql = "update " + table + " set state_" + mode + "_id=1 WHERE stoping_" + mode + " < '16.04.2010';";

5 个答案:

答案 0 :(得分:1)

MySQL日期格式为YYYY-MM-DD,但使用str_to_date()和date_format()可以更改日期格式。

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

在您的情况下,请尝试DATE_FORMAT(current_date, '%d.%M.%Y')

答案 1 :(得分:1)

mysql有一个返回当前日期的函数 - curdate()

因此,您的查询必须像

update table set state_mode_id=1 WHERE stoping_mode < curdate()

但是你有2个主要错误(甚至3个):

  1. 日期字段的格式必须为YYYY-MM-DD,而不是其他任何
  2. 这样的更新完全没有意义,因为所有这些状态都是在选择时评估
  3. 在查询时组装表名称是数据库设计非常糟糕的标志

答案 2 :(得分:0)

YYYY-MM-DD是mySQL的原生日期格式。我发现很难相信与DD-MM-YYYY字符串进行比较有效吗?

Anway,你要找的是DATE_FORMAT()

答案 3 :(得分:0)

使用此类函数返回格式

function ChangeDateforShow($inputdate) {
  if($inputdate>0) {
    $date  = substr($inputdate,8,2);
    $month = substr($inputdate,5,2);
    $year  = substr($inputdate,0,4);
    $show = $date.".".$month.".".$year;
    return $show;
  }
}

答案 4 :(得分:0)

function ChangeDateforDB($inputdate) {
  if($inputdate>0) {
    $date  = substr($inputdate,0,2);
    $month = substr($inputdate,3,2);
    $year  = substr($inputdate,6,4);
    $show = $year."-".$month."-".$date;
    return $show;
  }
}

确定在db本身中使用此功能,如

selectSql = "update " + table + " set state_" + mode + "_id=1 WHERE stoping_" + mode + " < 'ChangeDateforDB(customDATE)';"

否则你只会移动mysql date_format()