2016-03-02 51 views
0

我试图将生产数据复制到测试环境中。在表 之一中,我有一个定义为VARCHAR(10)的出生日期字段。由于这是一个敏感的列,因此我们需要随机化此日期字段中的值,以便原始DOB不会暴露给开发人员。您可以请指导我如何随机化日期或在普及的SQL中为日期字段添加日期。将日期添加到Pervasive中的varchar字段SQL

+0

有几个问题。你使用的是什么版本的PSQL?日期的样子是什么(yyyy-mm-dd,dd/mm/yyyy等)?根据您使用的版本,您可以使用RAND函数生成一个随机数,您也可以使用DATEADD将该数添加到日期。但是,这一切都取决于VARCHAR(10)字段的布局。如果该字段被定义为DATE,则会更容易。 – mirtheil

回答

0

如果您正在使用PSQL的新版本(我试过V12),你可能会使用这样的算法生成一个新的日期:

create table dtTest (f1 varchar(10)); 
insert into dtTest (f1) values ('2016-02-28'); 
select F1, left(convert(dateadd(day, truncate(rand() * 10, 0), dateadd(month, truncate(rand() * 10, 0), convert(f1, SQL_DATE))), SQL_VARCHAR), 10) from dtTest; 

它甚至可以变成一个更新语句并对您的桌面运行:

update <Table> set <DateField> = left(convert(dateadd(day, truncate(rand() * 10, 0), dateadd(month, truncate(rand() * 10, 0), convert(<DateField>, SQL_DATE))), SQL_VARCHAR), 10)