日期格式:从 varchar 到整型

发布于 2024-10-11 23:44:19 字数 119 浏览 2 评论 0原文

我的日期格式类似于“2011 年 1 月”,但如果我在“2011 年 1 月”和“2011 年 3 月”之间使用,则会给出错误的月份 所以我想将varchar转换为数字格式,以便我可以在mysql中的查询之间使用 提前致谢

i am having the date in the format like 'jan 2011' but if i use between 'jan 2011' and 'mar 2011' it is giving the wrong months
so i want to convert the varchar into the number format so that i can use between query in mysql
thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌逼全场 2024-10-18 23:44:19

您应该将 varchar 列转换为 date 列,这样更简单
(varchar 导致容易出错)

使用 find_in_set 进行

select find_in_set('jan', 'jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec');

映射

select 
find_in_set(
  substring_index(col, ' ', 1),
  'jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec'
)...

you should convert the varchar column to date column, which is more foolproof
(varchar lead to error prone)

use find_in_set to do the mapping

select find_in_set('jan', 'jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec');

so

select 
find_in_set(
  substring_index(col, ' ', 1),
  'jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec'
)...
祁梦 2024-10-18 23:44:19

将真实日期列添加到表中:

ALTER TABLE the_table 
 ADD COLUMN the_real_date_column DATE;

使用 STR_TO_DATE 将日期值插入该列:

UPDATE the_table  
   SET the_real_date_column = STR_TO_DATE(the_bad_date_column, '%b %Y');

STR_TO_DATE 将为每个未提供的值插入 0 — 在本例中为日期的日部分。因此,您可以将日期增加到 1,如下所示:

UPDATE the_table
   SET the_real_date_column = the_real_date_column + 1;

然后您可以正常查询日期列,使用 BETWEEN,所有这些都是好东西。
如果看到旧的专栏让您感到困扰,您可以像这样删除它:

ALTER TABLE the_table 
DROP COLUMN the_bad_date_column;

Add a real date column to your table:

ALTER TABLE the_table 
 ADD COLUMN the_real_date_column DATE;

Use STR_TO_DATE to insert a date value into that column:

UPDATE the_table  
   SET the_real_date_column = STR_TO_DATE(the_bad_date_column, '%b %Y');

STR_TO_DATE will insert a 0 for each value not supplied—in this case the day portion of the date. So you can increment the day to 1 like this:

UPDATE the_table
   SET the_real_date_column = the_real_date_column + 1;

Then you can query the date column normally, use BETWEEN, all that good stuff.
If seeing the old column bothers you, you can drop it like this:

ALTER TABLE the_table 
DROP COLUMN the_bad_date_column;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文