当我尝试SELECT CAST('01/1/2001' AS DATE)
时,它总是返回NULL
(作为我不能让它工作的一个例子)。我正在尝试INSERT
以这种格式创建的数据。
如何在DATE
列中存储此格式的日期?
请注意,如果日期小于0
,则该日期永远不会有前缀10
。
答案 0 :(得分:1)
你可以像这样使用MySQL函数STR_TO_DATE()
:
STR_TO_DATE('01/1/2012', '%d/%m/%Y')
当然,根据您的需要编辑格式。
答案 1 :(得分:1)
只需使用此代码
$date="01/1/2013";
date('Y-m-d',strtotime($date))
答案 2 :(得分:0)
您不希望以该格式存储它。这种方式不是很有用,以后当你需要做更多事情然后阅读它时你会后悔。
将其存储为date
数据类型...
$date = DateTime::createFromFormat("d-j-Y","01/1/2001");
$new_format = $date->format("Y-m-d"); // 2001-01-01
...然后在选择时格式化它:
SELECT DATE_FORMAT(`date`, "%m/%l/%Y") AS date // 01/1/2001
答案 3 :(得分:0)
这可能不是一个很好的答案,但如果你知道确切的顺序(d / m / Y),你可以按如下方式进行:
list($month,$day,$year) = explode("/","01/1/2013");
$date = $year."-".str_pad($month,2,"0", STR_PAD_LEFT)."-".str_pad($day,2,"0",STR_PAD_LEFT);
然后,您可以安全地使用MySQL日期格式进行比较和一般检查,而不是使用VARCHAR进行伪比较。不仅如此,您还可以将DATETIME作为索引受益。
答案 4 :(得分:-1)
这是一种简单的方法:
list($month, $day, $year) = explode("/","01/1/2013");
$time = mktime(0,0,0,intval($month),intval($day),intval($year));
$date_format = date("Y-m-d", $time);