所以資料是一個表,其中日期和時間資訊分成 4 列,一些是 varchar,另一些是整數:
Year Month Day Time
2022 May 20 18:43
1982 Feb 01 00:23
1942 Jan 13 16:17
月和時間是 varchar,年和日是整數。
我必須通過 MYSQL 查詢才能找到某些日期,如果我搜索的欄位是日期時間,例如 '2022-05-20 18:43' 會更容易
我昨天搜索了一整天,發現了很多接近我需要但不完全適合的例子,而且我對 MYSQL 不夠好,無法弄清楚這一點。
我假設我必須在某個時候 concat(),但是我必須在 varchar 上進行轉換
我想運行一個查詢,在資料庫中創建一個新列,即日期時間,然后我可以直接查詢。因此,創建一個名為“date2”的新列,它是我已經創建的日期時間,只需要以某種方式連接,然后將每行資料移動到它。像這樣:
Year Month Day Time Date2
2022 May 20 18:43 2022-05-20 18:43
1982 Feb 01 00:23 1982-02-01 00:23
1942 Jan 13 16:17 1942-01013 16:17
這是表架構:
CREATE TABLE `lunar2` (
`year` int(4) unsigned NOT NULL,
`month` varchar(3) NOT NULL,
`day` int(2) NOT NULL,
`time` time NOT NULL,
`sign` varchar(15) NOT NULL,
`other` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
這是有效的代碼。感謝提供代碼的人:
UPDATE table1 SET
other = STR_TO_DATE(CONCAT_WS(' ', Year, Month, Day, Time), '%Y %M %d %H:%i:%s');
uj5u.com熱心網友回復:
嘗試使用STR_TO_DATE()來創造DATETIME價值。
ALTER TABLE yourTable ADD COLUMN Date2 DATETIME;
UPDATE yourTable SET
Date2 = STR_TO_DATE(CONCAT_WS(' ', Year, Month, Day, Time), '%Y %b %d %H:%i:%s');
更新:由于您的Time欄位實際上是 type TIME,那么我們需要使用%H:%i:%s它來正確決議它。
uj5u.com熱心網友回復:
這是您嘗試執行的操作的示例。
將字串轉換為日期時,正確獲取格式字串很重要,否則我們會得到一個空值。
create table datess( y int, m varchar(3), d int, t varchar(5)); insert into datess (y,m,d,t)values (2022 ,'May', 20 ,'18:43'), (1982 ,'Feb', 01 ,'00:23'), (1942 ,'Jan', 13 ,'16:17');
SELECT STR_TO_DATE( CONCAT(y,'-',m,'-',d,' ',t), '%Y-%M-%d %H:%i') date_format FROM datess;| 日期格式 | | :----------------- | | 2022-05-20 18:43:00 | | 1982-02-01 00:23:00 | | 1942-01-13 16:17:00 |
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448018.html
上一篇:Excel中的日期轉換為UTC
