- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这些查询需要字符串到日期的转换,因为时间戳存储为字符串,并且日志记录应用程序是不可更改的。
我有一个完美运行的选择查询 ->
(SELECT main.user_id, main.Timestamp
FROM `user_table` main
WHERE STR_To_DATE( main.Timestamp , '%a %b %d %H:%i:%s CST %Y' ) <
(SELECT MAX(STR_To_DATE( sub.Timestamp , '%a %b %d %H:%i:%s CST %Y' ))
FROM `user_table` sub
WHERE sub.user_id = main.user_id ))
这将从我的表中选择所有但最近添加的用户 ID 和时间戳。
但是,当我尝试将其插入到另一个表中时...就像这样 ->
INSERT INTO user_table_temp (`user_id`, `Timestamp`)
(SELECT main.user_id, main.Timestamp
FROM `user_table` main
WHERE STR_To_DATE( main.Timestamp , '%a %b %d %H:%i:%s CST %Y' ) <
(SELECT MAX(STR_To_DATE( sub.Timestamp , '%a %b %d %H:%i:%s CST %Y' ))
FROM `user_table` sub
WHERE sub.user_id = main.user_id ))
我收到以下错误->
#1411 - Incorrect datetime value: 'Mon Mar 14 16:10:10 CDT 2011' for function str_to_date
这是因为我的时间戳以两种格式存储。一个在非夏令时将存储为“CST”,另一个在夏令时将存储为“CDT”。当 INSERT INTO SELECT 到达与我查询的内容相反的第一行时,它将失败并显示上述消息。
我也尝试过合并它们,这在运行选择时也有效 ->
INSERT INTO user_table_temp (`user_id `, `Timestamp`)
(SELECT main.user_id , main.Timestamp
FROM `user_table` main
WHERE COALESCE(STR_To_DATE( main.Timestamp , '%a %b %d %H:%i:%s CDT %Y' ), STR_To_DATE( main.Timestamp , '%a %b %d %H:%i:%s CST %Y' )) <
(SELECT MAX(COALESCE(STR_To_DATE( sub.Timestamp , '%a %b %d %H:%i:%s CDT %Y' ), STR_To_DATE( sub.Timestamp , '%a %b %d %H:%i:%s CST %Y' )))
FROM `user_table` sub
WHERE sub.user_id = main.user_id ))
为什么这会在 INSERT 上失败,但 SELECT 会起作用?
最佳答案
我认为它在 INSERT 上失败,因为你没有使用 a supported format .支持的格式。 . .
As a string in either 'YYYY-MM-DD HH:MM:SS' or 'YY-MM-DD HH:MM:SS' format. A “relaxed” syntax is permitted here, too: Any punctuation character may be used as the delimiter between date parts or time parts. For example, '2012-12-31 11:30:45', '2012^12^31 11+30+45', '2012/12/31 11*30*45', and '2012@12@31 11^30^45' are equivalent.
As a string with no delimiters in either 'YYYYMMDDHHMMSS' or 'YYMMDDHHMMSS' format, provided that the string makes sense as a date. For example, '20070523091528' and '070523091528' are interpreted as '2007-05-23 09:15:28', but '071122129015' is illegal (it has a nonsensical minute part) and becomes '0000-00-00 00:00:00'.
As a number in either YYYYMMDDHHMMSS or YYMMDDHHMMSS format, provided that the number makes sense as a date. For example, 19830905132800 and 830905132800 are interpreted as '1983-09-05 13:28:00'.
关于mysql - #1411 - INSERT INTO...SELECT 函数 str_to_date 的日期时间值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12198332/
我在尝试将日期列的格式从如下所示:05-JUN-15 转换为标准 MYSQL 格式时遇到问题。我尝试做的是: UPDATE sp_building_headcount set `ATTENDA
我在使用 STR_TO_DATE 函数的两个不同 Docker 镜像中遇到了不一致的行为。在一个 ubuntu 机器上运行,另一个在我的 Mac 上运行。 在 Linux 上: SELECT STR_
这是怎么回事? str_to_date('26/04/2011 00:00:00', '%d/%m/%Y')它给出 Error Code: 1292 Truncated incorrect date
我有一个名为 ReleaseDate 的列(它是一个字符串)。它们中的大多数采用 %e %M %Y(1979 年 5 月 25 日)的形式,但也有一些只是 %M %Y(1979 年 5 月) ) 或
我正在尝试运行一个函数来返回两个日期之间的天数差。出于这个原因,我根据日期参数获取两个日期(这工作正常)。接下来,如果在表中找不到日期,我将使用参数 date pdate 来构造日期。这种日期结构没有
str_to_date 和 concat 联合函数与时间和日期。我不知道如何在访问时将格式更改为导入或之后或直接填充。 CREATE trigger `trigger` before insert
以下内容从我的数据库返回一堆行: USE test; SELECT * FROM aaaa WHERE dddd BETWEEN (NOW() - INTERVAL 42 DAY) AND (NOW(
我正在使用应用程序日志中的时间戳,格式为“Apr 28 09:54:46”,这是下面 NEW.timestamp 中的值的格式。在按以下方式插入之前尝试使用触发器进行解析。 CREATE DEFINE
我正在尝试使用 STR_TO_DATE() 函数插入日期。由于某种原因它一直失败。有人可以帮忙吗?谢谢 HTML: Total Sales : Company Name : Sales T
这很奇怪,但我不明白到底发生了什么。我只是想通过计算两个日期之间的差异来更新我的列值。我有两列,其日期为 column_45 和 column_14,这两列的日期格式均为 4/8/2011 和 4/8
专家们,我快疯了...str_to_date 不起作用 mysql> describe product_tbl; +--------------------+-------------+------+
问候 Stackian Overflowers, 我正在尝试覆盖现有列中的数据,并在已设置的情况下执行 STR_TO_DATE。 代码如下: SELECT IF(columnA = '../../..
我想将 MySQL 字符串转换为所需的日期格式。 我的文件中有以下几行。 30-06-2017,clarke 31-07-2018,warner 我的表格有 2 列。 Column1 datatype
如果我在 MySQL 中使用这个命令: SELECT node.nid AS nid, users.uid AS users_uid, node.created AS node_created FRO
我的数据库中有一个 varchar 类型的 datecreated 字段。不幸的是,我无法将此字段更改为日期格式,因此我必须在选择数据时执行此操作。我试图根据日期对记录进行排序(以便显示最近的年、月、
我需要使用 STR_TO_DATE 将日期时间插入到 mysql 表中,但下面的命令给出的日期时间列始终为 NULL。 insert into DETECTED values(NULL,STR_TO
我正在尝试使用 STR_TO_DATE 函数格式化包含时间值的字符串。时间值为:不带前导零的小时(0-23) + 分钟(00-59)例如800、1245 或 1535。为了格式化这些值,我尝试使用 %
我在使用以下代码时遇到问题: INSERT into `fun` ( funner) SELECT YEAR(STR_TO_DATE(SUBSTRING(time,1,4), '%Y')) FROM
我的 MySQL(版本 5.7.25)数据库有一列,其中充满了 varchar(100) 日期,例如 Fri May 04 08:08:42 UTC 2018.我需要将它们转换为日期。 到目前为止我已
我正在尝试执行一些计算并使用 SQL 查询使用计算值更新表。使用的查询如下: UPDATE `table1` pv inner join (SELECT Email,IF(`DS Start
我是一名优秀的程序员,十分优秀!