当我尝试时SELECT CAST('01/1/2001' AS DATE)
,它总是返回NULL
(作为我无法让它工作的一个例子)。我正在尝试以INSERT
这种格式创建的数据。
如何将这种格式的日期存储在DATE
列中?
0
请注意,如果小于,则日期永远不会有前缀,而月份则不会10
。
当我尝试时SELECT CAST('01/1/2001' AS DATE)
,它总是返回NULL
(作为我无法让它工作的一个例子)。我正在尝试以INSERT
这种格式创建的数据。
如何将这种格式的日期存储在DATE
列中?
0
请注意,如果小于,则日期永远不会有前缀,而月份则不会10
。
您可以像这样使用 MySQL 函数STR_TO_DATE()
:
STR_TO_DATE('01/1/2012', '%d/%m/%Y')
当然,根据您的需要编辑格式。
只需使用此代码
$date="01/1/2013";
date('Y-m-d',strtotime($date))
您不想以这种格式存储它。这种方式不是很有用,当你需要做更多的时候你会后悔的,然后就读它。
将其存储为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
这可能不是一个完整的答案,但如果您知道确切的顺序 (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 作为索引。
这是一种简单的方法:
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);