![](/img/trans.png)
[英]Convert date format from dd-MM-yyyy to yyyy-mm-dd - in mysql
[英]SQL Change date format from yyyy-mm-dd to dd-mm-yyyy
我已经创建了MySQL表:
CREATE TABLE EMP(
EMPID INTEGER NOT NULL (5),
SURNAME VARCHAR(25),
SAL INTEGER(5),
JON VARCHAR(25),
START_DATE DATE,
END_DATE DATE,
DEPNO INTEGER(5)
);
具有以下记录:
INSERT INTO EMP
(EMPID,SURNAME,SALARY,JOB,START_DATE,END_DATE,DEPNO)
VALUES
('1','Vorosila','500000','COO','20150101',null,'1');
但是我需要将日期格式从2015 01 01更改为2015年01 01
谁能告诉我或告诉我该怎么做?
先感谢您
您不能在mysql中更改默认日期格式。
我曾经希望默认日期是可编辑的,这样我就不必跳过这些箍来获得我真正想要的日期,mysql甚至有一个date format
系统变量,但是它没有使用。 日期格式Mysql-链接
您真正应该做的是将其存储为默认格式Year-Month-Date
,然后在选择时进行转换。
我建议的第一件事是将您的日期列作为日期类型,这将为您的日期提供以下格式“ 2015-01-01”。
如果执行此操作,则可以使用DATE_FORMAT-链接 DATE_FORMAT
函数中的第二个值允许您自定义返回的日期,如果您查看链接,可以使用很多不同的方法:
SELECT
DATE_FORMAT(`START_DATE`,'%d-%m-%Y')
AS `START_DATE`
FROM ...
您还有另一个选择是将日期以您已经想要的格式存储为char
或varchar
列。
但是,很明显,此列将不被视为存储日期,因此在使用> < BETWEEN
时,在where
子句中无法提供正确的比较,也不能在order by
子句中提供正确的排序。 在这种情况下,它毕竟只是一串数字。
但是,如果确实需要在此列上使用“ where
或“ order by
”将其更改回查询中的date
,则可以使用STR_TO_DATE-链接 -在这种情况下,第二个值是“日期”在自定义格式中柱。 请记住where
您需要将其与正确的mysql格式进行比较,如下所示:
SELECT
`START_DATE`
FROM table
WHERE STR_TO_DATE(`START_DATE`,'%d-%m-%Y') BETWEEN '2015-01-01' and '2016-01-01'
在MySQL
您可以使用DATE_FORMAT
方法更改日期格式,该方法类似于Oracle中的to_char
。
DATE_FORMAT(SYSDATE(), '%DD-%MM-%YYYY');
有关说明符的更多信息,请检查此线程http://www.sqlines.com/oracle-to-mysql/to_char_datetime
您可以通过创建视图并引用该视图而不是(基础)表来执行您可能需要的操作。
CREATE VIEW emp_view AS
SELECT empid,
surname,
sal,
jon,
date_format(start_date, '%d-%m-%Y') as start_date,
date_format(end_date, '%d-%m-%Y') as end_date,
depno
FROM emp;
请注意,这会将日期列的类型更改为varchar
,因此比较将不再按预期进行:
SELECT * FROM emp_view WHERE start_date > '01-12-1924'; // fails!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.