如何在Mysql中检查日期是否有效? | 珊瑚贝

How to Check in Mysql either the date is valid or not?


我想问一下Mysql(日期)

我有一组数据,其日期使用数据类型 varchar
所以我想更新真实表,但在真实表中,数据类型是日期
当我想更新时,它会显示像这样的错误

Error Code: 1292
Incorrect date value: ‘1975-11-31’ for column ‘dob’ at row 1

我意识到日期无效…
那么我应该如何只获得有效日期?

请帮帮我..

这是我的查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
UPDATE ori_table a      
INNER JOIN set_of_data dd ON dd.old_id = a.id  
SET a.dob = dd.dob_new  

WHERE a.id IN (SELECT old_id FROM set_of_data    
WHERE status_color = 0    
AND dob_new IS NOT NULL  
AND age != ‘#VALUE!’  
AND SUBSTRING(dob_new ,6,2) <= 12  
AND SUBSTRING(dob_new ,6,2) >= 01  
AND SUBSTRING(dob_new ,1,4) <= 2018  
AND SUBSTRING(dob_new ,9,2) <= 31  
AND SUBSTRING(dob_new ,9,2) >= 01)  

AND a.dob IS NULL

  • 示例输出是什么?
  • 输出是仅在日历上有效的日期 示例 1996-06-01 有效 1977 -11-31 无效原始数据 否 |日期 1 | 1996-01-06 2 | 1977-11-31 预期结果否 |日期 1 | 1996-01-06


不要像你一样单独检查日期的所有部分(你不会工作,因为它仍然允许 11 月 31 日或 2 月 30 日作为日期),只需检查 MySQL 是否认为它是有效的通过 DATE 传递日期并检查非 NULL 结果。所以替换

1
2
3
4
5
AND SUBSTRING(dob_new ,6,2) <= 12  
AND SUBSTRING(dob_new ,6,2) >= 01  
AND SUBSTRING(dob_new ,1,4) <= 2018  
AND SUBSTRING(dob_new ,9,2) <= 31  
AND SUBSTRING(dob_new ,9,2) >= 01

1
AND DATE(dob_new) IS NOT NULL
  • 嗨@jazz 你能给我一些关于什么不起作用的更多信息吗?
  • 哦,当我删除条件并像我一样添加 STR_TO_DATE 函数时,我得到 0 行数据。
  • @jazz 似乎 STR_TO_DATE 在所有情况下都无法按预期工作。试试我编辑的版本


dob_new类型是mysql的日期吗?如果是,为什么不使用 dob_new between ‘2018-01-01’ and ‘2018-12-31’

  • 好的,您可以尝试只执行 SELECT old_id FROM set_of_data WHERE status_color = 0 AND dob_new IS NOT NULL AND age != ‘#VALUE!’ AND STR_TO_DATE(dob_new, ‘%Y-%m-%d’) IS NOT NULL 的 sql 并查看结果。
  • 我得到了数据,但它仍然有一个无效的日期,比如 1975-11-31
  • SELECT old_id FROM set_of_data WHERE status_color = 0 AND dob_new IS NOT NULL AND age != ‘#VALUE!’ AND STR_TO_DATE(dob_new, ‘%Y-%m-%d’) BETWEEN ‘2018-01-01’ AND ‘2018-12-31’
  • 仍然得到无效的日期..对不起


来源:https://www.codenong.com/52810284/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9323.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?