题 Mysql:在创建表时将DATETIME的格式设置为'DD-MM-YYYY HH:MM:SS'


谷歌搜索后,我找不到一种方法来创建一个新的表 DATETIME 默认格式设置为'的列DD-MM-YYYY HH:MM:SS

我看到了一个完成它的教程 phpmyadmin 所以我怀疑我可以通过命令行使用mysql,并在创建新表时实现相同的功能

CREATE TABLE ()

先谢谢你


30
2017-12-01 07:50


起源


我不认为在创建表格时你可以改变格式 - Rahul


答案:


“MySQL以'YYYY-MM-DD HH:MM:SS'格式检索并显示DATETIME值。” 这是来自mysql网站。您只能存储此类型,但是当您需要显示它时,您可以使用多种时间格式函数之一来更改它。

Mysql时间和日期函数

例如,其中一个功能是 日期格式,可以这样使用:

SELECT DATE_FORMAT(column_name, '%m/%d/%Y %H:%i') FROM tablename

46
2017-12-01 08:01



使用PHP获取当前日期时间 date()功能,用途 date("Y-m-d H:i:s")。 - Carcigenicate


使用DATE_FORMAT函数更改格式。

SELECT DATE_FORMAT(CURDATE(), '%d/%m/%Y')

SELECT DATE_FORMAT(column_name, '%d/%m/%Y') FROM tablename

参考 DOC 更多细节


16
2017-12-01 07:52





正如其他人已经解释过这是不可能的,但是这里是替代解决方案,它需要一些调整,但它的工作方式与datetime列相同。

我开始思考,如何使格式化成为可能。我有个主意。如何触发呢?我的意思是,添加类型的列 char,然后使用MySQL触发器更新该列。这很有效!我做了一些与触发器有关的研究,最后提出了这些问题:

CREATE TRIGGER timestampper BEFORE INSERT ON table
FOR EACH
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d-%m-%Y %H:%i:%s');
CREATE TRIGGER timestampper BEFORE UPDATE ON table
FOR EACH
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d-%m-%Y %H:%i:%s');

你不能用 TIMESTAMP 要么 DATETIME 作为列类型,因为它们具有自己的格式,并且它们会自动更新。

所以,这是您的替代时间戳或日期时间替代方案!希望这有所帮助,至少我很高兴我得到了这个工作。


5
2018-01-24 17:18





我使用了以下代码行,它工作得很好谢谢.... @Mithun Sasidharan **

SELECT DATE_FORMAT(column_name,'%d /%m /%Y')FROM tablename

**


5
2018-03-21 13:28





我很确定你不能改变mysql中的日期时间格式。 phpmyadmin设置可能应用自定义格式,因为它读取日期时间(使用DATE_FORMAT或来自php的东西)。数据库使用的格式无关紧要,在应用程序中格式化以根据需要显示它。

日期格式化是一项非常常见的任务。我通常喜欢将其抽象为国际化代码,或者,如果您不需要处理i18n,则将其抽象为公共日期实用程序库。它有助于保持一致性并使以后更容易更改(或添加i18n支持)。


4
2017-12-01 07:58



谢谢你的回答,我读了DATE_FORMAT函数作为获取我想要的格式的方法。 - Iam Zesh


不,你不能; datetime将仅在创建表时以默认格式存储,然后您可以更改显示格式 select 查询你想要的方式使用 Mysql日期时间函数


2
2017-12-01 08:06





这不能用于表格;此外,您甚至无法更改此默认值。

答案是服务器变量 DATETIME_FORMAT,它未被使用。


2
2017-12-01 08:29





Dim x as date 

x = dr("appdate")
appdate = x.tostring("dd/MM/yyyy")

dr是datareader的变量


2
2018-04-19 15:32





尝试这个:

DATE NOT NULL FORMAT 'YYYY-MM-DD'

0
2017-08-18 13:55