我必须将日期时间与MySQL数据库的当前格式日期时间进行比较,但问题是我不知道如何从数据库中获取该格式。由于某些原因,当我在数据库中插入日期时间时,它会自动将其转换为另一种更改小时和分钟的格式。例如,如果我想插入'12:05:26',它会变成'17:10:30‘。我想要比较这两种格式,以验证我要插入的内容。
发布于 2017-03-23 04:18:00
也许它把插入的时间和日期混在一起了?可能是因为您的数据库使用的语言设置与您插入的格式化日期不同。尝试在Insert上使用STR_TO_DATE()函数显式解析日期,以避免混乱。
INSERT INTO someTable (someDateTime) VALUES
(STR_TO_DATE('22/03/2017 9:30:20 AM', '%c/%e/%Y %r'))发布于 2017-03-23 04:22:36
我们可以使用DATE_FORMAT函数将MySQL、DATE或DATETIME值格式化为指定格式的字符串。例如:
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允许一种“宽松”格式...
并且还警告说冒号不一定是为时间保留的,这些冒号可以被使用并解释为日期值的分隔符。并不是说我们真的想这样做:
SELECT '2017:3:21-16_35_11' + INTERVAL 0 DAY https://dev.mysql.com/doc/refman/5.7/en/datetime.html
MySQL还将识别数字值(具有两位数的月、日、小时、分钟和秒)。yyyymmddhhmmss,例如
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
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;https://stackoverflow.com/questions/42961526
复制相似问题