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

Iam*_*esh 34 mysql format command-line datetime create-table

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

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

CREATE TABLE ()
Run Code Online (Sandbox Code Playgroud)

先感谢您

Mir*_*kov 56

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

Mysql时间和日期功能

例如,其中一个函数是DATE_FORMAT,可以用来这样:

SELECT DATE_FORMAT(column_name, '%m/%d/%Y %H:%i') FROM tablename
Run Code Online (Sandbox Code Playgroud)


Mit*_*ran 16

使用DATE_FORMAT函数更改格式.

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

SELECT DATE_FORMAT(column_name, '%d/%m/%Y') FROM tablename
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅DOC


aks*_*ksu 6

正如其他人已经解释过这是不可能的,但这里是替代解决方案,它需要一点调整,但它的工作方式与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');
Run Code Online (Sandbox Code Playgroud)
CREATE TRIGGER timestampper BEFORE UPDATE ON table
FOR EACH
ROW SET NEW.timestamp = DATE_FORMAT(NOW(), '%d-%m-%Y %H:%i:%s');
Run Code Online (Sandbox Code Playgroud)

您不能使用TIMESTAMPDATETIME作为列类型,因为它们具有自己的格式,并且它们会自动更新.

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


小智 5

我使用了以下代码行,它工作正常,谢谢.... @Mithun Sasidharan**

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

**