mySQL中的日期格式有类型(yyyy-mm-dd),现在我尝试将其反转(dd-mm-yyyy)。 我有桌面用户
CREATE TABLE USER
(
USER_ID INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,
DOB DATE,
);
所以当我在其中插入值时:
INSERT INTO USER(DOB) VALUES(DATE_FORMAT('13-07-1990','%d,%m,%Y));
但是,它不起作用。它注意到我应该使用1990-07-13代替' 13-07-1990'。
请帮我这样做。感谢。
答案 0 :(得分:4)
日期的ANSI SQL标准格式为YYYY-MM-DD HH:MM:SS
。以这种格式捕获日期以便插入数据库更容易。
为了使用您正在使用的格式(MM-DD-YYYY
)存储日期,您需要使用STR_TO_DATE
函数,该函数允许您将字符串转换为日期。该函数的语法是:
STR_TO_DATE(str, format)
可以找到格式的说明符here。
对于INSERT
语句,您可以使用:
INSERT INTO `user` (`dob`) VALUES
( STR_TO_DATE('13-07-1990','%d-%m-%Y') )
答案 1 :(得分:0)
DATE_FORMAT
仅用于将日期保存到具有非标准格式的varchar字段中,或者以非标准格式从DB中检索日期。除 YYYY-MM-DD 之外,您不能将DATE
类型字段中的内容保存为任何格式。
答案 2 :(得分:-1)
来自DOCS :DATE类型用于具有日期部分但没有时间部分的值。 MySQL以'YYYY-MM-DD'格式检索并显示DATE值。支持的范围是'1000-01-01'到'9999-12-31'。
我的方式会有所不同。我会在php中计算我的日期并将所需的格式传递给查询,而不是在查询中计算它。
$your_date= "2010-03-21";
$desired_format = date("d-m-Y", strtotime($your_date));//returns 21-03-2010
$desired_format = date("m-d-Y", strtotime($your_date));//returns 03-21-2010
使用strtotime和date功能,您可以将日期转换为您想要的任何格式