我创建了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日
有人可以告诉我或告诉我该怎么做吗?
先谢谢你
答案 0 :(得分:1)
DATE
值没有“格式”,它们是表示时间(或整天,但仍与格式无关)的瞬间的对象。
格式应用于输入和输出,因此您只需将in the MySQL manual的正确格式应用于SELECT
语句。
答案 1 :(得分:1)
您无法更改mysql中的默认日期格式。
我曾经希望默认日期是可编辑的,所以我不必跳过这些箍来获得我真正想要的日期,mysql甚至有一个date format
系统变量,但它没有被使用。 Date Format Mysql - link
您应该做的是将其存储为默认格式Year-Month-Date
,然后在选择时将其转换。
我建议的第一件事就是将您的日期列作为日期类型,这会使您的日期格式为以下格式' 2015-01-01'。
如果你这样做,那么你可以使用DATE_FORMAT - link - DATE_FORMAT
函数中的第二个值允许你自定义返回的日期,如果你看的话,你可以做很多不同的事情。在链接:
SELECT
DATE_FORMAT(`START_DATE`,'%d-%m-%Y')
AS `START_DATE`
FROM ...
您拥有的另一个选项是以char
或varchar
列的格式存储日期。
但是,显而易见的是,此列不会被视为存储日期,因此在使用where
或正确排序时,不会在> < BETWEEN
子句中给出正确的比较。 order by
条款。毕竟这只是一串数字。
但是,如果您确实需要使用此列上的where
或order by
将其更改回查询中的date
,则可以使用STR_TO_DATE - link在这种情况下,第二个值是您日期的自定义格式&#39;在专栏中。请记住where
,您需要将其与正确的mysql格式进行比较,如下所示:
SELECT
`START_DATE`
FROM table
WHERE STR_TO_DATE(`START_DATE`,'%d-%m-%Y') BETWEEN '2015-01-01' and '2016-01-01'
答案 2 :(得分:0)
在MySQL
中,您可以使用DATE_FORMAT
方法更改日期格式,该方法类似于Oracle中的to_char
。
DATE_FORMAT(SYSDATE(), '%DD-%MM-%YYYY');
有关说明符的更多信息,请检查此线程http://www.sqlines.com/oracle-to-mysql/to_char_datetime
答案 3 :(得分:0)
您可以通过创建视图并引用该视图而不是(基础)表来执行您可能想要的操作。
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!