首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql数据库的当前日期时间

问MySql数据库的当前日期时间
EN

Stack Overflow用户
提问于 2017-03-23 03:59:38
回答 2查看 31关注 0票数 0

我必须将日期时间与MySQL数据库的当前格式日期时间进行比较,但问题是我不知道如何从数据库中获取该格式。由于某些原因,当我在数据库中插入日期时间时,它会自动将其转换为另一种更改小时和分钟的格式。例如,如果我想插入'12:05:26',它会变成'17:10:30‘。我想要比较这两种格式,以验证我要插入的内容。

EN

回答 2

Stack Overflow用户

发布于 2017-03-23 04:18:00

也许它把插入的时间和日期混在一起了?可能是因为您的数据库使用的语言设置与您插入的格式化日期不同。尝试在Insert上使用STR_TO_DATE()函数显式解析日期,以避免混乱。

代码语言:javascript
复制
INSERT INTO someTable (someDateTime) VALUES
(STR_TO_DATE('22/03/2017 9:30:20 AM', '%c/%e/%Y %r'))
票数 0
EN

Stack Overflow用户

发布于 2017-03-23 04:22:36

我们可以使用DATE_FORMAT函数将MySQL、DATE或DATETIME值格式化为指定格式的字符串。例如:

代码语言:javascript
复制
SELECT DATE_FORMAT(NOW(),'%a, %M %e, %Y')   

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

进行格式转换的"it“到底是什么?观察到的行为可能是可以解释的,但是没有看到产生这种行为的代码或语句,我们只是猜测而已。

您如何确定MySQL正在更改您提供的值?

对于日期时间字符串,MySQL有一个标准格式:%Y-%m-%d %T。

MySQL在它接受的格式中确实允许一些自由。参考手册说明

MySQL允许一种“宽松”格式...

并且还警告说冒号不一定是为时间保留的,这些冒号可以被使用并解释为日期值的分隔符。并不是说我们真的想这样做:

代码语言:javascript
复制
   SELECT '2017:3:21-16_35_11' + INTERVAL 0 DAY 

https://dev.mysql.com/doc/refman/5.7/en/datetime.html

MySQL还将识别数字值(具有两位数的月、日、小时、分钟和秒)。yyyymmddhhmmss,例如

代码语言:javascript
复制
  SELECT 20170321163511 + INTERVAL 0 DAY 

为了支持各种字符串格式,MySQL提供了方便的DATE_FORMAT和STR_TO_DATE函数。

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date

代码语言:javascript
复制
 CREATE TABLE foo (dt DATETIME PRIMARY KEY) ENGINE=INNODB;
 INSERT INTO foo (dt) VALUES ('2017-03-21 12:05:26');
 SELECT dt FROM foo;
 SELECT DATE_FORMAT(dt,'%T') FROM foo; 
 DROP TABLE foo;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42961526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档