我在MySql的表中有一列,其中包含任何格式的字符串日期(沒有固定模式),它可以是m-d-y
或M-D-Y
或m/d/y
或YY/MM/DD或MM/DD/YY或mm/dd/yy等。我的問題是如何檢測它,然後更改爲某些特定格式,即mm/dd/yy。如何從日期以不同格式存儲的varchar列獲取有效日期
3
A
回答
2
如果您可以猜測您在varchar字段中存儲日期的不同格式的數量,那麼處理該問題會更容易;
一種方式是把查詢中的所有這些不同的格式如下:
SELECT
COALESCE(
STR_TO_DATE(your_date_column,'%m-%d-%Y'),
STR_TO_DATE(your_date_column,'%M-%D-%Y'),
STR_TO_DATE(your_date_column,'%m/%d/%Y'),
STR_TO_DATE(your_date_column,'%m-%d-%Y'),
....
.
.
)
FROM your_table;
示範:
SET @your_date_field := '8/8/2016';
SELECT
COALESCE(
STR_TO_DATE(@your_date_field,'%m-%d-%Y'),
STR_TO_DATE(@your_date_field,'%M-%D-%Y'),
STR_TO_DATE(@your_date_field,'%m/%d/%Y'),
STR_TO_DATE(@your_date_field,'%M/%D/%Y')
);
輸出:2016-08-08
(yyyy-mm-dd)
注:
但日期應該存儲在date
數據類型中。違反這一規定將會導致這種麻煩的情況。
因此,最好將這些日期字符串移至日期數據類型列。
更多:爲了將這些日期字符串到date
數據類型列,你可以按照下面的步驟:
ALTER TABLE your_table ADD COLUMN date_new date;
UPDATE
your_table
SET date_new = COALESCE(
STR_TO_DATE(your_date_column,'%m-%d-%Y'),
STR_TO_DATE(your_date_column,'%M-%D-%Y'),
STR_TO_DATE(your_date_column,'%m/%d/%Y'),
STR_TO_DATE(your_date_column,'%m-%d-%Y'),
....
.
.
);
ALTER TABLE your_table DROP COLUMN `date`;
ALTER TABLE datestable CHANGE COLUMN `date_new` `date` date;
+0
非常感謝您的支持,您已經解決了使用'COALESCE'函數選擇正確日期的挑戰性問題,我知道'COALESCE'函數,但沒有想到了。實際上有人已經創建了列類型'varchar',並以不同的格式插入/更新日期,因此我正確的做了一個單獨的列,並將這些值以* mysql *日期格式存儲並放置這一列,正是你說的是我的計劃來執行它。非常感謝你的幫助。 –
+0
很高興這是一個幫助。:) – 1000111
相關問題
- 1. MySQl日期格式更新日期格式不同的Varchar
- 2. 如何從日期時間格式獲取日期-python
- 3. 如何從日期字符串中獲取日期格式?
- 4. 如何從日期字符串格式獲取日期對象
- 5. 如何從日期對象中獲取日期格式?
- 6. 如何從日期時間對象獲取短日期格式
- 7. PowerShell的獲取日期格式,以日曆日期
- 8. 從不同的格式獲取日期,而從春天的日期驗證MVC
- 9. VARCHAR值到日期格式
- 10. 格式表與日期格式的varchar日期mysql
- 11. 如何從datetime中提取日期時間作爲varchar存儲
- 12. Joda獲取無效格式日期
- 13. 以mysql日期格式存儲時區
- 14. 以mongodb格式存儲日期
- 15. 多種日期格式在MSSQL VARCHAR列
- 16. 從php日期獲取日期格式如「Y-m-d H:i:s」
- 17. 日期格式:從varchar到整數
- 18. 如何獲取json日期格式的日期?
- 19. 如何以與字符串相同的格式獲取日期
- 20. 某日期的NSDate格式化不是有效日期
- 21. 不同的日期格式
- 22. 不同的日期格式?
- 23. 獲取日期格式從android中的給定日期
- 24. UILabel從datepicker獲取日期的日期格式
- 25. 從Python的日期列獲取周開始日期(星期日)
- 26. 如何以日期格式在Excel中保存日期
- 27. 僅從數據庫中存儲的日期時間格式中提取日期
- 28. 如何在視圖中以不同的格式保存日期?
- 29. 如何使用特定日期格式獲取日期差異?
- 30. 從「有效」日期表中獲取第n個日期
ü可以嘗試此查詢describe表;然後ALTER TABLE – Oncodeeater
'01/12/13' - 2001年12月13日或2013年12月12日? – Mike
有多少種不同的格式?你可以猜測或列出清單嗎? – 1000111