【问题标题】:How can i convert a date in php to SQL format ? (and insert it)如何将 php 中的日期转换为 SQL 格式? (并插入它)
【发布时间】:2011-06-15 00:59:03
【问题描述】:

我正在尝试插入一个日期,比如说 CURDATE() 到一个 sql DateTime 字段。

我的日期格式为:28/01/2008

当我尝试将它插入 SQL 时,我得到的只是零。

那么如何正确转换呢?

【问题讨论】:

    标签: php sql datetime


    【解决方案1】:
    $new_date = date('Y-m-d', strtotime($old_date));
    

    说明

    1. strtotime() 将尝试解析一个字符串(在这种情况下为$old_date)并了解它是什么日期。它期望得到一个包含英文日期格式或英文文本日期时间描述的字符串。成功时,它将返回 Unix timestamp(自 1970 年 1 月 1 日以来的秒数)。现在我们从那个字符串中得到了一个时间点。

    2. date() 然后会将这个先前获得的时间点转换为第一个参数中描述的格式,在上面的示例中是'Y-m-d'

      • Y — 年份的完整数字表示,4 位数字
      • m — 月份的数字表示,前导零
      • d — 日期,2 位数字,前导零
      • - — 字面意思是减号

    这是您可以在格式参数字符串中使用的full list 字符

    【讨论】:

    • strtotime() 没有返回任何东西。
    • 好的,strtotime 只是不适用于那种格式...需要将 '/' 更改为 '-'
    • 我认为 strtotime 不理解法国日期格式..!你可以使用我的代码...
    • 看看我下面的答案,这是因为 strtotime 在您使用 / 作为分隔符时需要美国日期格式,替换它确实会有所帮助。更多信息请参考PHP Reference : date formats
    【解决方案2】:

    我正在尝试插入一个日期,比如说 CURDATE() 到 sql DateTime 字段。

    $timestamp = strtotime($old_date);
    $mydate = date('Y-m-d H:i:s', $timestamp);
    

    【讨论】:

      【解决方案3】:

      由于您使用的是欧洲日期表示法 (dd/mm/yyyy),因此 strtotime 函数将返回 0(然后将在 date 之前将其转换为 1970-01-01 ) 如果您不使用 -. 作为分隔符。

      所以如果你想使用 strtotime,那么你将不得不稍微改变你的日期字符串:

      $olddate = '28/01/2008';
      $newdate = strtotime(str_replace('/', '-', $olddate));
      

      $newdate 现在应该包含 '2008-01-28'...

      【讨论】:

        【解决方案4】:
        join('-',array_reverse(explode('/',$date)))
        

        获取标准的 YYYY-MM-DD Mysql 日期格式。

        或者只使用 MySQL'DATE_FORMAT

        【讨论】:

          【解决方案5】:

          我正在尝试插入一个日期,比如说 CURDATE() 到一个 sql DateTime 字段。

          为什么不直接使用MySQL函数呢?

          insert tbl (id, other, datecol)
          values(NULL, 'abcdef', CURDATE());
          

          我的日期格式为:28/01/2008

          如果它不是您想要的 CURDATE(),而是 dd/mm/yyyy 格式的 PHP 变量,那么请参阅 MySQL man page 了解如何格式化文字。安全格式是YYYY-MM-DDYYYYMMDD 没有时间。

          $date = '28/01/2008';
          $query = "insert tbl (id, other, datecol)
                    values(NULL, 'abcdef', '" . date('Ymd', strtotime($date)) . "');";
          

          注意:yyyymmdd 在 SQL Server 中也是有效的格式。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-04-05
            • 2015-04-30
            • 2021-06-01
            • 2018-05-05
            • 2012-06-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多