首页 文章

在MySQL中插入datetime时的PHP date()格式

提问于
浏览
256

如果我想将结果插入MySQL datetime 类型列,那么传递给PHP中的 date() 函数的正确格式是什么?

我一直在尝试 date("Y-M-D G:i:s") ,但每次只插入"0000-00-00 00:00:00" .

10 回答

  • 0

    我用这个函数(PHP 7)

    function getDateForDatabase(string $date): string {
        $timestamp = strtotime($date);
        $date_formated = date('Y-m-d H:i:s', $timestamp);
        return $date_formated;
    }
    

    旧版本的PHP(PHP <7)

    function getDateForDatabase($date) {
        $timestamp = strtotime($date);
        $date_formated = date('Y-m-d H:i:s', $timestamp);
        return $date_formated;
    }
    
  • 38
    $date_old = '23-5-2016 23:15:23'; 
    //Date for database
    $date_for_database = date ("Y-m-d H:i:s", strtotime($date_old));
    
    //Format should be like 'Y-m-d H:i:s'`enter code here`
    
  • 9

    这让我很生气,寻找一个简单的答案 . 最后,我创建了这个函数,它似乎捕获了所有输入并提供了一个正确或至少有效且可检查的良好SQL字符串 . 如果它是1999-12-31它可能是错误的但不会在MySQL中引发错误 .

    function MakeSQLDate($date) {
        if (is_null($date)) {
            //use 1999-12-31 as a valid date or as an alert
            return date('Y-m-d', strtotime('1999-12-31'));
        }
    
        if (($t = strtotime($date)) === false) {
            //use 1999-12-31 as a valid date or as an alert
            return date('Y-m-d', strtotime('1999-12-31'));
        } else {
            return date('Y-m-d H:i:s', strtotime($date));
        }
    }
    
  • 10

    问题是你正在使用 'M''D' ,这是一个文本表示,MySQL期望格式的数字表示 2010-02-06 19:30:13

    尝试: date("Y-m-d H:i:s") 使用数字等价物 .

    编辑:切换 GH ,虽然它可能没有影响,但您可能希望使用带有前导0的24小时格式 .

  • 563

    来自php的评论date() manual page

    <?php $mysqltime = date ("Y-m-d H:i:s", $phptime); ?>
    

    你的'Y'是正确的 - 这是一整年,但'M'是一个三个月的月份,而'm'是两个月的月份 . 与'D'而不是'd'相同的问题 . 'G'是1或2位小时,其中'H'在需要时始终具有前导0 .

  • 6

    这是一个替代解决方案:如果您将PHP中的日期作为时间戳,则绕过使用PHP处理它并让DB负责使用 FROM_UNIXTIME 函数对其进行转换 .

    mysql> insert into a_table values(FROM_UNIXTIME(1231634282));
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from a_table;
    
    +---------------------+
    | a_date              |
    +---------------------+
    | 2009-01-10 18:38:02 |
    +---------------------+
    
  • 22

    使用PHP格式化MySQL datetime

    $date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";
    
  • 7

    将时间戳格式化为MySQL DATETIME列:

    strftime('%Y-%m-%d %H:%M:%S',$timestamp);
    
  • 7

    我使用以下PHP代码创建一个插入MySQL DATETIME列的变量 .

    $datetime = date_create()->format('Y-m-d H:i:s');
    

    这将保留服务器的当前日期和时间 .

  • 96

    如果不使用时间戳,则不需要使用PHP中的date()方法 . 如果 dateposted 是日期时间列,您可以像这样插入当前日期:

    $db->query("INSERT INTO table (dateposted) VALUES (now())");
    

相关问题