我有一个日期列,日期为 2012-02-25 格式。我需要将其更新到 12-02-25 但不知道该怎么做?
谢谢!
编辑:在查看了所有答案之后,似乎我还不够清楚。我不想改变我的类型,也不想玩输出。我想将现有的日期列从 2012 年更新到 12 年。如果有的话,它应该是一个 UPDATE 查询,我只是不确定如何编写它。感谢到目前为止的所有评论。
编辑 2:看来我的问题没有意义,我不知道您不能将 DATE 存储为 xx-xx-xx。无论如何谢谢!
无法以这种格式将日期存储'12-02-25'
在具有DATE
as 数据类型的列中。您可以将其存储在具有数据类型的列中CHAR(8)
,然后使用以下UPDATE
查询:
UPDATE table_name
SET date_column = DATE_FORMAT(date_column, '%y-%m-%d');
但更好的方法是DATE
仅以格式存储它并DATE_FORMAT
在从表中检索数据时使用函数。
使用 mysql date_format函数根据需要显示它:
SELECT DATE_FORMAT(youdatecolumn, '%y-%m-%d') FROM yourtable
您应该使用日期时间类型。否则你会遇到一些问题(排序,与日期相关等)
您可以更改日期的显示作为输出。
从我的MySQL 参考:
两位数年份的日期值不明确,因为世纪是未知的。这样的值必须解释为四位数的形式,因为 MySQL 在内部使用四位数存储年份。
对于 DATETIME、DATE 和 TIMESTAMP 类型,MySQL 使用以下规则解释使用模糊年份值指定的日期:
00-69 范围内的年份值将转换为 2000-2069。
70-99 范围内的年份值将转换为 1970-1999。
对于 YEAR,规则相同,但有以下例外:将数字 00 插入 YEAR(4) 会产生 0000 而不是 2000。要为 YEAR(4) 指定零并将其解释为 2000,请将其指定为字符串“0”或“00”。
请记住,这些规则只是对您的数据值的含义提供合理猜测的启发式方法。如果 MySQL 使用的规则没有产生您需要的值,您必须提供包含四位数年份值的明确输入。
示例代码尝试代码
public class MyDateParser {
public static void main(String args[]) throws ParseException {
String s = "2011-03-27";// or 3/27/2011
SimpleDateFormat dateFormatter = s.length() == 9 ? new SimpleDateFormat(
"yyyy-MM-dd") : new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
Date date = dateFormatter.parse(s);
calendar.setTime(date);
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yy-MM-dd");
String strss = simpleDateFormat2.format(date);
System.out.println(strss);
}
}