小编Alp*_*pha的帖子

转换为datetime仅在WHERE子句上失败?

我遇到了一些SQL服务器查询的问题.事实证明我有一个带有"Attibute_Name"和"Attibute_Value"字段的表,它可以是任何类型,存储在varchar中.(是的,我知道.)

特定属性的所有日期似乎都存储在"YYYY-MM-DD hh:mm:ss"格式中(不是100%确定,这里有数百万条记录),所以我可以毫无问题地执行此代码:

select /*...*/ CONVERT(DATETIME, pa.Attribute_Value)
from 
    ProductAttributes pa
    inner join Attributes a on a.Attribute_ID = pa.Attribute_ID
where 
    a.Attribute_Name = 'SomeDate'
Run Code Online (Sandbox Code Playgroud)

但是,如果我执行以下代码:

select /*...*/ CONVERT(DATETIME, pa.Attribute_Value)
from 
    ProductAttributes pa
    inner join Attributes a on a.Attribute_ID = pa.Attribute_ID
where 
    a.Attribute_Name = 'SomeDate'
    and CONVERT(DATETIME, pa.Attribute_Value) < GETDATE()
Run Code Online (Sandbox Code Playgroud)

我将收到以下错误: 从字符串转换日期和/或时间时转换失败.

怎么会在where子句上失败而不是在select子句上?

另一个线索:

如果不使用Attribute_Name进行过滤,而是使用存储在数据库(PK)中的实际Attribute_ID,它将正常工作.

select /*...*/ CONVERT(DATETIME, pa.Attribute_Value)
from 
    ProductAttributes pa
    inner join Attributes a on a.Attribute_ID = pa.Attribute_ID
where 
    a.Attribute_ID = 15
    and CONVERT(DATETIME, pa.Attribute_Value) < GETDATE()
Run Code Online (Sandbox Code Playgroud)

更新 感谢大家的答案.我发现很难真正选择正确的答案,因为每个人都指出了一些对理解问题有用的东西.这绝对与执行的顺序有关.事实证明我的第一个查询正常工作,因为首先执行WHERE子句,然后执行SELECT.由于相同的原因,我的第二个查询失败(因为未过滤属性,执行相同的WHERE子句时转换失败).我的第三个查询是有效的,因为ID是索引(PK)的一部分,所以它优先,并且首先在该条件下钻取结果.

谢谢!

sql datetime where-clause sql-server-2008

10
推荐指数
2
解决办法
1万
查看次数

有多少IE渲染模式?

我想我们都听说过不同的IE渲染模式,主要是基于它们的版本(IE6,IE7,IE8,IE9),它们的"兼容模式","怪癖模式"以及先前版本渲染的模拟.这就是,渲染IE9模拟IE8将无法获得与原生IE8相同的渲染.

无视这些可能运行的大量Windows版本......这些组合中有多少实际上是不同的?在测试我的网站时,我应该考虑IE9运行IE8文档模式吗?我应该选择主要版本吗?

老实说,对于仅微软世界的整套渲染引擎我很困惑,还没有提到Webkit,Gecko和其他渲染引擎如何表现.我希望这个问题能让我(和其他人)更接近清除我们的想法.

internet-explorer rendering

9
推荐指数
1
解决办法
985
查看次数

JavaScript本地范围:var vs. this

我似乎无法理解JavaScript变量的特定范围.与我发现的其他示例和问题不同,我对嵌套函数的范围感兴趣.

我在这个JSFiddle上建立了一个例子.相关部分如下:

function MyObject() {
    var self = this;

    var a = 1;
    this.b = 2;

    var innerMethod = function() {
        //1 and 2: direct reference
        logMessage("a = " + a); // a = 1
        //logMessage("b = " + b); // Error: b is not defined

        //3 and 4: using this
        logMessage("this.a = " + this.a); // this.a = undefined
        logMessage("this.b = " + this.b); // this.b = undefined

        //5 and 6: using self
        logMessage("self.a = " + …
Run Code Online (Sandbox Code Playgroud)

javascript scope scoping

9
推荐指数
1
解决办法
2498
查看次数

在Firefox Selenium IDE上看不到"文件/编辑/操作"菜单栏

截图

嗨,我刚刚开始学习Selenium并且正在尝试探索适用于Firefox的IDE.我正在使用Firefox 59.0.2和Selenium IDE 3.0.2.

IDE窗口,不显示任何菜单栏选项(文件/编辑/ ..).我期待用Java导出代码.如果没有菜单栏选项本身,我怎么能这样做?

请参考随附的屏幕截图.我很感激任何帮助,我确定我在这里遗漏了一些东西,除非在最新的IDE版本中完全禁用了这些选项.

selenium selenium-ide

7
推荐指数
1
解决办法
6034
查看次数

SQL n对n匹配多个值

我有一个将图像与标签匹配的Web应用程序,我需要创建一种动态优化标签搜索结果的方法.但是,我找不到一个干净的方法来进行SQL查询,这就是我需要你帮助的地方.

我的想法是,如果我搜索标签"干净"和"狗",我将得到图像结果,标签"干净"和"狗".如果我还包含标签"little",我的结果将必须缩小到与三个标签相关联的图像.

那么,有一个N对N的关系,这是正确的方法吗?

我的自然方法是生成这样的代码,但我当然不喜欢它的发展方向:

SELECT images.*
FROM images
INNER JOIN image_tags ON ...
INNER JOIN tags ON ...
WHERE tags.tag = @tag1
AND EXISTS
(
  SELECT 1
  FROM images 
  INNER JOIN image_tags ON ...
  INNER JOIN tags ON ...
  WHERE tag = @tag2
  AND EXISTS
  (
    SELECT 1
    FROM images 
    INNER JOIN image_tags ON ...
    INNER JOIN tags ON ...
    WHERE tag = @tag3
    AND EXISTS (...)
    ...
  )
)
Run Code Online (Sandbox Code Playgroud)

当然,那不是很好.任何的想法?

谢谢!

sql

6
推荐指数
1
解决办法
1272
查看次数

MVC3 URL编码?

ASP.NET MVC3/Razor.

我发现当我创建一个动作链接时,比如说:

@Html.ActionLink(product.Title, "Detail", "Products", new { id = product.ProductID }, null)
Run Code Online (Sandbox Code Playgroud)

MVC3引擎创建我的产品链接.例如:

http://myhost/{ActionUrl}/PRODID
Run Code Online (Sandbox Code Playgroud)

但是,如果我的产品ID包含任何特殊字符,则不会对其进行URL编码.

http://myhost/{ActionUrl}/PROD/ID
Run Code Online (Sandbox Code Playgroud)

当然,这打破了我的路由.我的问题是:

  1. 我应该期望它自动url编码值吗?有没有办法设置它?
  2. 如果没有,那么编码和解码那些最简洁的方法是什么?我真的不想在每个控制器中都这样做.

谢谢!

url routing url-routing url-encoding asp.net-mvc-3

6
推荐指数
1
解决办法
7039
查看次数

任何使Kinetic.js支持IE8的方法?

我现在处于一种情况,我需要使用一些复杂的代码来处理Kinetic.js和一个用于IE8的canvas元素.

据官方统计,Kinetic.js没有支持IE8的计划.

我尝试使用webshims lib,但Kinetic.js在以下代码上失败:

Kinetic.Canvas = function(width, height) {
    this.element = document.createElement('canvas');
    this.context = this.element.getContext('2d'); //<-- Error here

    // set dimensions
    this.element.width = width;
    this.element.height = height;
};
Run Code Online (Sandbox Code Playgroud)

错误是"对象不支持属性或方法'getContext'".这对我来说很有意义,因为我不希望IE8文档创建的元素画布实现canvas元素的方法,但如果<canvas>元素已经创建,webshims就会播放,你可以使用这些方法.但是,强制Kinetic.js使用一个canvas元素会破坏它的一些功能(因为它可以动态创建画布对象).

为了达到这个目的,我有哪些选择?

javascript html5 canvas internet-explorer-8 kineticjs

5
推荐指数
1
解决办法
2632
查看次数

合并提交时如何避免rebase地狱?

我的git树中有以下情况:

1 -- 2 -- 3 -- 4 <-- master
      \         \
       5 -- 6 -- 7 -- 8 -- 9 <-- feature
Run Code Online (Sandbox Code Playgroud)

我想从功能中重新定义和压缩所有东西,这样我就可以通过添加功能的单个提交来提升master.

由于提交7已经是解决所有冲突的合并,我尝试了以下方法:

git rebase -i -p master
Run Code Online (Sandbox Code Playgroud)

我在这里给出的唯一选择是提交7,8和9."有道理",我想,"因为合并已经包括5和6,所以它们可以被丢弃".我继续在一次提交中压缩7,8和9,我们称之为"789".(我知道,我是创意类型.)

在此之后,我的树看起来像这样:

1 -- 2 -- 3 -- 4 <-- master
                \
                 5 -- 6 -- 789 <-- feature
Run Code Online (Sandbox Code Playgroud)

同一分支中5和6的存在使我感到困惑,但同样,因为它们已经包含在7中(现在是789),我可以放弃它们.

所以我git rebase -i master又一次,这次我丢弃了5和6.

然而,冲突在这里和那里出现,所以我放弃了整个事情.

我目前处于该阶段,但我的远程分支尚未更新,因此我可以重置为原始状态.

在没有手动解决所有合并冲突的情况下,哪些是正确的步骤,这将使我想到的地方?

git rebase git-rebase git-rewrite-history git-branch-sculpting

5
推荐指数
2
解决办法
2337
查看次数

EmberJS中[],@ each,content和<arrayName>之间有什么区别?

我环顾四周,但我找不到任何关于以下内容之间实际差异的文件.

Ember.Object.extend({
  // ...
  myProperty1: function() { /* ... */ }.property('myArray'),
  myProperty2: function() { /* ... */ }.property('myArray.content'),
  myProperty3: function() { /* ... */ }.property('myArray.[]'),
  myProperty4: function() { /* ... */ }.property('myArray.@each')
});
Run Code Online (Sandbox Code Playgroud)

我确实理解这.content似乎是属性的数组的内部存储,如果这恰好是一个可能不可用PromiseArray.我也明白@each不会以这种方式使用,但主要是访问一个ProxyArray生成结果,因为映射了这个数组中每个元素的内部属性.

除了那些微妙的差异,它们似乎工作几乎相同.但是,我们myArraymyArray.[]?那么他们与其他人的情况有什么关系呢?

javascript properties ember.js

5
推荐指数
1
解决办法
116
查看次数

可空类型和赋值运算符

我一直认为.NET框架的可空类型只是框架给我们的一个很好的构造,但并没有添加到语言本身的任何新东西.

也就是说,直到今天,为了演示,我尝试创建自己的Nullable结构.

我得到了我需要的一切,除了这样做的能力:

var myInt = new Nullable<int>(1);
myInt = 1;
Run Code Online (Sandbox Code Playgroud)

问题是第二个语句,因为我不能以任何方式重载赋值运算符.

我的问题是:这是一个特殊情况,在赋值运算符有过载的语言中?如果没有,你会如何使之前的例子有效?

谢谢!

.net c# nullable operator-overloading assignment-operator

4
推荐指数
2
解决办法
844
查看次数