如何更改SQL表的日期(使用phpmyadmin)


How to change date for SQL table (using phpmyadmin)?

我很难理解如何在SQL中操作日期的格式。我创建了一个列,并将类型设置为date。默认格式似乎是yyyy-mm-dd。我更喜欢Jan 1, 2015这样的格式。最好将实际数据存储在SQL中,并以看似标准的yyyy-mm-dd格式进行转换吗?

在我的情况下,我想创建选择(下拉)html表单是基于我的SQL日期数据。但是我希望日期以Jan 1, 2015格式显示。因此,似乎我需要将SQL数据转换为我想要的格式,然后在提交回SQL时,我需要将其重新转换为标准格式。对于后一部分,下面的代码似乎可以工作。但是,我如何完成前面的任务,采取yyyy-mm-dd,并将其转换为我喜欢的格式?

$myinput='Jan 1, 2015'; 
$sqldate=date('Y-m-d',strtotime($myinput)); 
echo $sqldate; 

您可以使用DATE_FORMAT()将日期值转换为您想要的格式。至于你的情况:

SELECT DATE_FORMAT(`your_col_name`,'%b %d, %Y') AS `your_col_name` FROM `tbl_name`

另一方面,您可以使用STR_TO_DATE()来存储不同格式的将日期输入数据库。例如,如果您想将Jan 1, 2015存储到数据库中,而不将其转换为mysql默认格式,那么您可以使用:

UPDATE `tbl_name` SET `date_col_name` =STR_TO_DATE($date_str,`%b %d, %Y`) WHERE {CONDITION}

但是MySQL中较少的操作适合更快的查询

对于在PHP中处理日期/时间信息,最好的方法是使用Unix时间戳作为交换格式。您可以通过UNIX_TIMESTAMP()函数实现这一点。在PHP中,然后使用date()或gmdate()来格式化所需的时间。最后,当将时间戳存储回MySQL时,使用FROM__UNIXTIME()。

发出查询:

SELECT UNIX_TIMESTAMP(`datetime_column`) AS `unixtime` FROM `table`;

在PHP中,你可以按照你喜欢的方式格式化它:

$unixtime = $row['unixtime']; // $row is the row fetched from database
echo gmdate('Y-m-d', $unixtime);

然后可以操作时间:

$unixtime += 86400; // add one day

最后,将其存储回MySQL:

UPDATE `table` SET `datetime_column` = FROM_UNIXTIME($unixtime) WHERE …

(您可能使用预处理语句或其他方法来防止SQL注入)

额外提示:如果你不知道时区,时间戳或任何日期/时间都是无用的。所以最好的方法是将日期/时间存储在UTC中,然后将其转换为您喜欢的时区。