在PHP中将日期格式m.Y转换为MySQL兼容的Y-m-d

在PHP中将日期格式m.Y转换为MySQL兼容的Y-m-d,php,mysql,date,Php,Mysql,Date,我有如下日期字符串: 2015年8月 我想做的是,将其转换为MySQL兼容的日期格式: date(“Y-m-d”,strotime(从格式(“m.Y”,“2015年8月”)创建的日期) 没有按预期工作。我做错了什么 顺便说一句:如果我能得到2015-06-01结果,没关系。试试这个 <?php //explode the date $dateProps = explode('.',"08.2015"); //prepare the format $date = $dateProps[1

我有如下日期字符串:

2015年8月

我想做的是,将其转换为MySQL兼容的日期格式:

date(“Y-m-d”,strotime(从格式(“m.Y”,“2015年8月”)创建的日期)

没有按预期工作。我做错了什么

顺便说一句:如果我能得到
2015-06-01
结果,没关系。

试试这个

<?php

//explode the date
$dateProps = explode('.',"08.2015");

//prepare the format
$date = $dateProps[1].'-'.$dateProps[0].'-01';

//use date functions
$date = date('Y-m-d', strtotime($date));
$var = '08.2015';
$date = '01-'.str_replace('.', '-', $var);
echo date('Y-m-d', strtotime($date));

我认为下面的SQL对你有用

SELECT DATE_FORMAT(STR_TO_DATE('06.2015','%m.%Y'),'%Y-%m');
输出:
2015-06


谢谢。

首先,如果您想使用
strotime
,它应该是:
strotime('01.08.2015')
,也就是说,年-月-日必须都是必需的。

您不需要strotime

echo DateTime::createFromFormat('m.Y', "08.2015")->format("Y-m-d");
输出
2015-08-31

如果您总是希望只给出
m.Y
就可以得到月份的第一个日期,您可以这样做

echo DateTime::createFromFormat('d.m.Y', "01."."08.2015")->format("Y-m-d");
输出
2015-08-01

您可以在下面的sql中尝试-

SELECT DATE_FORMAT(STR_TO_DATE('08.2015','%m.%Y'),'%Y-%m-01')

08.2015此字符串中的日期在哪里?08是月?@TarunUpadhyay 08-month,2015年8月你想得到什么?是2015-08吗?从2015年8月到2015-08-01谢谢您的解决方案,但我认为您所写的只有一行版本。是的,如果您的月份没有加零,则需要第二行。请注意,我将
“01”
与字符串的其余部分分开,只是为了表明这是一个新的添加项。否则即使是
“01.$mY”
也可以。