【问题标题】:How to select different format of the date in mysql如何在mysql中选择不同格式的日期
【发布时间】:2014-11-01 09:23:01
【问题描述】:

我有这张表,但我无法将其格式更改为 yyyy-mm-dd,因为我有太多与此格式相关的脚本 dd-mm-yyyy,如果我要更改其格式,那将是一团糟

身份证日期 1 01-07-2014 2 02-07-2014 3 03-07-2014 4 05-07-2014 5 07-07-2014 6 14-07-2014 7 18-07-2014 8 19-07-2014 9 21-07-2014 10 01-08-2014 11 02-08-2014 12 03-08-2014

关于php文件

$from = '01-07-2014';
$to = '02-08-2014';

我需要从 01-07-2014 到 01-09-2014 之间的所有日期更新一些值,格式为 dd-mm-yyyy

我正在使用

  UPDATE successlog 
        SET successlog.overtime ='00:00'                
            Where date >= '$from' AND 
                  date <='$to'

它不起作用,并且正在使用 $from 和 $to 之间的键也不起作用

当格​​式为 yyyy-mm-dd 时,它工作正常,但在我将格式更改为 dd-mm-yyyy 它不工作。

【问题讨论】:

  • 为什么不对数据库列使用datedatetime 数据类型?您可以使用DATE_FORMAT() 随意设置日期格式。
  • “$from”和“$to”之间的日期

标签: php mysql date time format


【解决方案1】:

您需要在sql中将格式更改为yyyy-mm-dd才可以工作。

在将变量添加到 sql 字符串之前,尝试使用 PHP 日期函数将 $from 和 $to 变量转换为 yyyy-mm-dd 格式。

$from = '01-07-2014';

$from = date('Y-m-d',strtotime($from));


$to = '01-09-2014';

$to = date('Y-m-d',strtotime($to));

【讨论】:

  • 我有这张表,我无法更改它的格式,因为我有很多与 dd-mm-yyyy 格式相关的脚本
  • 尝试仅在 SQL 字符串中进行更改,例如 UPDATE successlog SET successlog.overtime ='00:00' Where date >= 'date('Ym-d',strtotime($from))' AND date
【解决方案2】:

在 PHP 中:

$from = date('Y-m-d', strtotime($from));
$to = date('Y-m-d', strtotime($to));

或在 MySQL 中:

.. WHERE date BETWEEN STR_TO_DATE('$from','%d-%m-%Y') AND STR_TO_DATE('$to','%d-%m-%Y')

【讨论】:

    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多