在asp中从错误的mysql格式的日期生成json

在asp中从错误的mysql格式的日期生成json,sql,json,tsql,vbscript,asp-classic,Sql,Json,Tsql,Vbscript,Asp Classic,我参加了一个新项目,这显然不仅仅是过时的。这个应用程序在DB中以一种非常奇怪的模式节省了开放时间,这让我疯狂了一个多星期 请看这张图片: 如您所见,营业时间以如下模式保存: dayFrom | dayTo | timeFrom | timeTo ======================================= monday | friday | 07:00 | 17:00 saturday | | 08:00 | 12:00 为了避免任何误解:

我参加了一个新项目,这显然不仅仅是过时的。这个应用程序在DB中以一种非常奇怪的模式节省了开放时间,这让我疯狂了一个多星期

请看这张图片:

如您所见,营业时间以如下模式保存:

dayFrom  | dayTo  | timeFrom | timeTo 
=======================================
monday   | friday | 07:00    | 17:00
saturday |        | 08:00    | 12:00
为了避免任何误解:

从07:00到17:00的开放MO-FR

从08:00到12:00开放SA

周日休息

现在,这似乎已经有点过时了,但坚持下去,一张桌子可能看起来像这样:

dayFrom   | dayTo   | timeFrom | timeTo 
=======================================
monday    | tuesday | 07:00    | 14:00
wednesday |         | 08:00    | 12:00
thursday  | friday  | 07:30    | 13:00
saturday  |         | 08:00    | 12:00
所以,现在我的问题是:我需要创建一个循环或类似的东西来创建一个有效的json字符串,其中包含所有这些开放时间

现在,我有这个:

jsonAppendix={openingHours:[ 对于i=1至cinthoechsterTag jsonAppendix=jsonAppendix&{dayOfWeek:&i&,从1:&rsZeitVon&,到1:&rsZeitBis&}, 下一个 '删除最后一个逗号 jsonAppendix=LEFTjsonAppendix,LENjsonAppendix-1 jsonAppendix=jsonAppendix&]} 如果我只有一个星期一到星期五,它已经可以工作了,但是第二个或下一个条目没有考虑在内

输出如下所示,这显然有点正确:

{
    "openingHours":[
        {
            "dayOfWeek":1,
            "from1":"07:00",
            "to1":"17:00"
        },
        {
            "dayOfWeek":2,
            "from1":"07:00",
            "to1":"17:00"
        },
        {
            "dayOfWeek":3,
            "from1":"07:00",
            "to1":"17:00"
        },
        {
            "dayOfWeek":4,
            "from1":"07:00",
            "to1":"17:00"
        },
        {
            "dayOfWeek":5,
            "from1":"07:00",
            "to1":"17:00"
        }
    ]
}
但是星期六没有被承认

我的函数如下所示:

dayFrom   | dayTo   | timeFrom | timeTo 
=======================================
monday    | tuesday | 07:00    | 14:00
wednesday |         | 08:00    | 12:00
thursday  | friday  | 07:30    | 13:00
saturday  |         | 08:00    | 12:00
SQL=SELECT*FROM StandortOpen,其中S_ID=&iStandortId&和OpenArt='&sArt&'ORDER BY Sort,OpenArt DESC 调用openRSSQL “日映射” tageV0=替换Tagvon,Mo,1 tageV1=替换Tagvon,Di,2 tageV2=替换Tagvon,Mi,3 tageV3=替换Tagvon,Do,4 tageV4=替换Tagvon,Fr,5 tageV5=替换Tagvon,Sa,6 tageV6=7 tageB0=替换TAGBIS,Mo,1 tageB1=替换tagbis,Di,2 tageB2=替换Tagbis,Mi,3 tageB3=替换Tagbis,Do,4 tageB4=替换Tagbis,Fr,5 tageB5=替换Tagbis,Sa,6 '例如:mo-fr 对于tageV中的每个项目 “保存最小的工作日 如果优点项和项目>则
如果您想在SQLServer中创建数据集,请考虑下面的

范例

声明@YourTable table day from varchar25,day to varchar25,timeFrom varchar25,timeTo varchar25 在@YourTable值中插入 “周一”、“周二”、“07:00”、“14:00”, “周三”,“08:00”,“12:00”, “周四”、“周五”、“07:30”、“13:00”, “周六”,“08:00”,“12:00” ;将CTE作为从值1、‘星期一’、2、‘星期二’、3、‘星期三’、4、‘星期四’、5、‘星期五’、6、‘星期六’、7、‘星期日’DDD、DDD中选择的*, 字符as 选择A* ,R1=B.DD ,R2=IsNullC.DD,B.DD 从@YourTable A 在dayFrom=B.DDD时左连接到CTEB 在dayTo=C.DDD时左连接CTEC Where 1=1-此处的Where语句 选择daySeq=A.DD ,dayOfWeek=A.DDD ,from1=IsNullB.TimeFrom,'Closed' ,from2=IsNullB.TimeTo,'Closed' 从反恐执行局 在B.R1和B.R2之间左连接A.DD上的字符B 按1订购 返回

注意:关闭是可选的。删除最终查询中的左连接

现在,如果您想在SQL Server中创建JSON字符串,而您不是在2016年,我们可以调整最终查询并添加一个UDF

选择JSON=[dbo].[udf Str JSON]0,0, 选择daySeq=A.DD ,dayOfWeek=A.DDD ,from1=IsNullB.TimeFrom,'Closed' ,from2=IsNullB.TimeTo,'Closed' 从反恐执行局 在B.R1和B.R2之间左连接A.DD上的字符B 按1订购 用于XML原始 返回的JSON字符串

UDF如果感兴趣

创建函数[dbo].[udf Str JSON]@IncludeHead int、@ToLowerCase int、@XML 返回varcharmax 像 开始 声明@Head varcharmax=,@JSON varcharmax= ; 将cteEAV设为Select RowNr=按Select NULL排序的行数 ,Entity=xRow.value'@*[1],'varchar100' ,Attribute=xAtt.value'local-name','varchar100' ,Value=xAtt.Value'.',varcharmax' 从@XML.nodes'/row'作为RxRow 交叉应用R.xRow.nodes“/@*”作为AxAtt ,cteSum as Select Records=countDistinct Entity
,头=IIF@IncludeHead=0,iifcount非常感谢约翰。我会在周一尝试这个,并会给你反馈。谢谢你的努力。这看起来很有希望!只是简单介绍一下,我会在这一天给你反馈。我不知道你为什么被否决,但我的问题是它也是。@DasSaffe不是我的第一部dv,也不会是我的最后一部。我只是希望他们有勇气发表评论。-期待你的反馈。从你的截图来看,这似乎正是我想要的——但我很难将其转移到我的案例中。你介意加入聊天吗?如果我能想出如何创建一个?@DasSaffe我从来没有发起过聊天。给我一点时间找到它