我有 2 个存储过程 Encode
、Decode
,我想使用此 sp 来转换我的 datetime
列值(例如 Dob
)到加密日期。问题是加密格式不是 datetime(varbinary),因此无法插入该字段。更改数据类型或添加新列对我不利,因为我的数据库很大,有很多表和 sps。我目前使用的步骤是:
declare @datetime
set @datetime='01/02/2008 12:45 PM'
declare @secretDate varchar(400)
declare @date varchar(200)
set @date=(select Convert(varchar(200),@datetime,120)
EXEC @secretDate=dbo.Encode @date
set @date=(select Convert(varchar(200),@secretdate,120))
select Convert(varchar(200),convert(varbinary(MAX),@date)) as EncryptedDate
如有任何建议,我们将不胜感激!
最佳答案
您必须分多个步骤对列定义进行此更改。
1) 添加一个新的 cryptoDate 列设置为编码值。
2) 从表中删除现有的日期列。
3) 将 cryptoDate 重命名为现有日期列名称。
您也许可以在一个命令中执行步骤 2 + 3,但我不确定语法。
Any suggestion is appreciated!
这整件事听起来是个坏主意。如果数据已加密,但“解码”函数是数据库中的存储过程,则数据实际上并未加密。这样做还会阻止所有数据比较工作,这是一件坏事。
如果您不想将数据呈现给用户,为什么不在从数据库读取数据时对其进行编码呢?
关于mysql - 加密 mysql 服务器中的日期时间字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11000422/