2017.9.7 关于时间、SQL关联查询的几个操作

分享人:周倩宇

1. JS求时间差

网址:http://www.cnblogs.com/cm490893449/archive/2010/10/26/1861230.html

var date1=new Date();  //开始时间
alert("aa");
var date2=new Date();    //结束时间
var date3=date2.getTime()-date1.getTime()  //时间差的毫秒数
 

//计算出相差天数
var days=Math.floor(date3/(24*3600*1000))
 
//计算出小时数

var leave1=date3%(24*3600*1000)    //计算天数后剩余的毫秒数
var hours=Math.floor(leave1/(3600*1000))
//计算相差分钟数
var leave2=leave1%(3600*1000)        //计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/(60*1000))
 

//计算相差秒数
var leave3=leave2%(60*1000)      //计算分钟数后剩余的毫秒数
var seconds=Math.round(leave3/1000)
 

alert(" 相差 "+days+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")

2. JS日期格式化转换方法

网址:http://www.cnblogs.com/tugenhua0707/p/3776808.html

  • 将日期转换为指定的格式:比如转换成 年月日时分秒 这种格式:yyyy-MM-dd hh:mm:ss 或者 yyyy-MM-dd。

可以为Date原型添加如下的方法:

Date.prototype.format = function(fmt) { 
     var o = { 
        "M+" : this.getMonth()+1,                 //月份 
        "d+" : this.getDate(),                    //日 
        "h+" : this.getHours(),                   //小时 
        "m+" : this.getMinutes(),                 //分 
        "s+" : this.getSeconds(),                 //秒 
        "q+" : Math.floor((this.getMonth()+3)/3), //季度 
        "S"  : this.getMilliseconds()             //毫秒 
    }; 
    if(/(y+)/.test(fmt)) {
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
    }
     for(var k in o) {
        if(new RegExp("("+ k +")").test(fmt)){
             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
         }
     }
    return fmt; 
}

比如我们可以这样调用下:

var time1 = new Date().format("yyyy-MM-dd hh:mm:ss");console.log(time1);

运行如下:



也可以转换成 ”年月日”的格式

var time2 = new Date().format("yyyy-MM-dd");console.log(time2);

运行如下:


  • 将指定的日期转换为"年月日"的格式,代码如下:

   var oldTime = (new Date("2012/12/25 20:11:11")).getTime();
    var curTime = new Date(oldTime).format("yyyy-MM-dd");
    console.log(curTime);

运行如下:


  • 将 "时间戳" 转换为 "年月日" 的格式.

比如如下代码:

var da = 1402233166999;   
da = new Date(da);    
var year = da.getFullYear()+'年';    
var month = da.getMonth()+1+'月';    
var date = da.getDate()+'日';    
console.log([year,month,date].join('-'));

运行如下:


3. JS获取url中参数值QueryString()

网址:http://www.jb51.net/article/94448.htm

获取url的querystring参数

获取url的querystring参数的两种方法如下:

  • 方法一:正则匹配

//获取url中的参数
function getQueryString(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", i); // 匹配目标参数
  var result = window.location.search.substr(1).match(reg); // 对querystring匹配目标参数
  if (result != null) {
    return decodeURIComponent(result[2]);
  } else {
    return null;
  }
}

对于http://localhost/index.html?q1=abc&q2=efg&q3=h的url,获取 q1 参数值的方法如下:

var q1 = getQueryString('q1'); // abc
  • 方法二:split

function getQueryString() {  
  var qs = location.search.substr(1), // 获取url中"?"符后的字串  
    args = {}, // 保存参数数据的对象
    items = qs.length ? qs.split("&") : [], // 取得每一个参数项,
    item = null,
    len = items.length;
 
  for(var i = 0; i < len; i++) {
    item = items[i].split("=");
    var name = decodeURIComponent(item[0]),
      value = decodeURIComponent(item[1]);
    if(name) {
      args[name] = value;
    }
  }
  return args;
}

对于http://localhost/index.html?q1=abc&q2=efg&q3=h 的url,获取 q1 参数值的方法如下:

var qs = getQueryString(); 
var q1 = qs["q1"]; // abc

用上面两种getQueryString()方法都能很好地解决获取url的querystring参数问题。就此顺便整理一下Location对象,方便日后学习参考。详情看上面网址。

4. 日期为1900-01-01时,不显示

var date1 = (new Date(data.date)).getTime();
var date2 = new Date(date1).format("yyyy-MM-dd");
console.log(date2 );

if (!RegExp("1900").test(date2 )) {
     $("#date2 ").append(date2 );
} else {
  $("#date2 ").append("");
}

5. SQL中的关联查询

表1 name sex
表2 name age
表3 name age

表一中name如果在表二中则用表二age的数据,在表三中则用表三age的数据:

select  case 
when t2.name  is not null then t2.age  
when t3.name  is not null then t3.age as age
from t1 left  join t2 on t2.name =t1.name  
left  join t3 on t3.name =t1.name ;

附:SQL中CASE关键字的使用:http://blog.csdn.net/wuzuodingfeng/article/details/53523176

从多个表中查数据到一个视图中

select Tid,
       PmSupplyCDCNo,
       PmSupplyName,

       (select psri.PsriSupplyTypeInAssess
          from PmSupplyReportInfo psri
         where psb.Tid = psri.PsriRefTid) as PsriSupplyTypeInAssess,

       PmSupplyAdress,

       (select psac.PsacProjectType
          from PmSupplyAuthorContent psac
         where psb.Tid = psac.PsacRefTid) as PsacProjectType,

       (select psac.PsacConclusion
          from PmSupplyAuthorContent psac
         where psb.Tid = psac.PsacRefTid) as PsacConclusion,

       PmSupplyContactPTel,
       PmSupplyContactPEmail,

       (select pscr.PscrOpraDate
          from PmSupplyCommentRecord pscr
         where pscr.PscrPsNextStepFlag = '1201'
           and pscr.PscrPrevOrNext = '101'
           and psb.Tid = PscrRefPsbiTid) as PscrOpraDate,

       (select CONVERT(varchar(100),
                       SUBSTRING(psac.PsacConclusion,
                                 CHARINDEX(':', psac.PsacConclusion) + 1,
                                 DATALENGTH(psac.PsacConclusion)),
                       23) as PscrOpraDate
          from PmSupplyAuthorContent psac
         where isdate(SUBSTRING(psac.PsacConclusion,
                                CHARINDEX(':', psac.PsacConclusion) + 1,--CHARINDEX返回“:”在psac.PsacConclusion中索引,若不存在,则返回0
                                DATALENGTH(psac.PsacConclusion))) = 1--DATALENGTH返回用于表示任何表达式的字节数。
           and psac.PsacRefTid = psb.Tid 

        union all (select dateadd(year, 2, pscr.PscrOpraDate)
                    from PmSupplyCommentRecord pscr,
                         PmSupplyAuthorContent psac
                   where pscr.PscrPsNextStepFlag = '1201'
                     and pscr.PscrPrevOrNext = '101'
                     and psb.Tid = pscr.PscrRefPsbiTid
                     and isdate(SUBSTRING(psac.PsacConclusion,
                                          CHARINDEX(':', psac.PsacConclusion) + 1,
                                          DATALENGTH(psac.PsacConclusion))) = 0--isdate判断该数据是否是日期
                     and psac.PsacRefTid = psb.Tid)) as PscrExpiryDate,

       (SELECT SUBSTRING(psac.PsacConclusion, CHARINDEX(':', psac.PsacConclusion) + 1, DATALENGTH(psac.PsacConclusion)) AS bz
            FROM PmSupplyBaseInfo psb, PmSupplyAuthorContent psac
            WHERE isdate(SUBSTRING(psac.PsacConclusion, CHARINDEX(':', psac.PsacConclusion) + 1, DATALENGTH(psac.PsacConclusion))) = 0
            AND CHARINDEX(':', psac.PsacConclusion) = 0
            AND psac.PsacRefTid = psb.Tid) as bz  ,

       PmSupplyStatus
  from PmSupplyBaseInfo psb
 where psb.PmSupplyStatus in ('1201', '1301', '1401')

6. jquery中append、prepend, before和after方法的区别

网址:http://blog.csdn.net/yexudengzhidao/article/details/54709224

  • append()和prepend()

假设

<div class='a'> //<---you want div c to append in this
  <div class='b'>b</div>
</div>

使用

$('.a').append($('.c'));

效果如下:

<div class='a'> //<---you want div c to append in this
  <div class='b'>b</div>
  <div class='c'>c</div>
</div>

同样使用

$('.a').prepend($('.c'));

效果如下:

<div class='a'> //<---you want div c to append in this
  <div class='c'>c</div>
  <div class='b'>b</div>
</div>
  • 使用after()和before()

同样使用假设代码:

$('.a').after($('.c'));

效果如下:

<div class='a'>
  <div class='b'>b</div>
</div>
<div class='c'>c</div>

同样使用before()

$('.a').before($('.c'));

效果如下:

<div class='c'>c</div>
<div class='a'>
  <div class='b'>b</div>
</div>

总结:

append() & prepend()是在元素内插入内容(该内容变成该元素的子元素或节点),after() & before()是在元素的外面插入内容(其内容变成元素的兄弟节点)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容