gpt4 book ai didi

MySQL - 我的月份是当前存储的 0-11

转载 作者:行者123 更新时间:2023-11-29 02:04:32 24 4
gpt4 key购买 nike

我以为我遇到了 MySQL 5.1 的错误,但错误是在创建时间戳的 perl 代码中。 perl 的本地时间使用 0-11 表示月份,但 MySQL 的日期时间使用 1-12。所以,我得到了所有这些格式错误的时间戳,我需要更新它们。

2012-00-19 09:03:30

这应该是:

2012-01-19 09:03:30

问题是 MySQL 的日期函数在 00 月份返回 NULL。有没有办法在 MySQL 中执行此操作?

编辑:解决方案=

 UPDATE test_stats 
SET start_time = CAST(CONCAT(SUBSTRING(start_time, 1, 5),
CAST((CAST(SUBSTRING(start_time, 6, 2) AS UNSIGNED) + 1) AS CHAR(2)),
SUBSTRING(start_time, 8, 12)) AS DATETIME);

顺便说一下,我使用的是 MySQL 5.1

最佳答案

这应该有效:

UPDATE MyTable
SET DateTimeField =
CAST (
SUBSTRING(DateTimeString, 1, 5) -- '2012-'
+ CAST((CAST(SUBSTRING(DateTimeString, 6, 2) AS INT) + 1) AS VARCHAR) -- '00' => '1'
+ SUBSTRING(DateTimeString, 8, 12) -- '-19 09:03:30'
AS DATETIME)

用这个选择测试

DECLARE @x VARCHAR(50) = '2012-00-19 09:03:30'

SELECT CAST(SUBSTRING(@x, 1, 5)
+ CAST((CAST(SUBSTRING(@x, 6, 2) AS INT) + 1) AS VARCHAR)
+ SUBSTRING(@x, 8, 12) AS DATETIME)

关于MySQL - 我的月份是当前存储的 0-11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com