gpt4 book ai didi

mysql - 创建过程以验证要插入的数据

转载 作者:太空宇宙 更新时间:2023-11-03 12:00:00 27 4
gpt4 key购买 nike

我正在尝试创建一个程序来防止插入不正确的日期。该表接受一个 8 位长的整数,因此 April 28 2015 将被插入为 4282015

我的逻辑是创建一些临时变量来存储 monthdateyear,然后通过获取子字符串为它们赋值来自原始的 8 位数字值。然后我会将它们转换为字符串并连接在一起(我不确定是否有连接 int 的方法,如果有可能会更好)然后将其转换回 int 被插入。到目前为止,这是我尝试过的。

更新:“样本”表只是一个例子,我将在一个设置不当的数据库中的另一个表上运行它(我的工作是运行分析并稍微修复它)。按照他们的设置方式,日期是一个整数。

CREATE TABLE sample (
id INT not null,
date INT not null
);


CREATE PROCEDURE InsertDate ( date int(8))
BEGIN
DECLARE month INT;
DECLARE day INT;
DECLARE year INT;
SET month = SUBSTRING(new.date, 1, 2);
SET day = SUBSTRING(new.date, 3, 2);
SET year = SUBSTRING(new.date, 5, 4);

IF ( month IN(1, 12) AND day IN(1, 31) AND year IN(2012, 2013) )
Declare temp as int;
#Cast all variables as VARCHARS to concatenate together
#Convert back to INT to be inserted
Set temp = CAST( (CAST(month AS VARCHAR(2)) +
CAST(day AS VARCHAR(2)) +
CAST(year as VARCHAR(4))) as INT );
insert into sample (id, date) values (1 ,temp);
END IF;
END;

如果有人想看一看并给我一些指示或解释一些东西,将不胜感激!

最佳答案

如果您采取明智的做法,您会将列创建为 Date 或 DateTime 类型。由于您同时拥有 MySQL 和 SQL-Server 标签,我实际上不知道您使用的是哪个 DBMS,但它们都支持 Date 类型。

不要让它变得比你需要的更复杂。

关于mysql - 创建过程以验证要插入的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29911477/

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