我对评估下面的陈述感到有点困惑:
func getAspectFillFrame(sizeImageView : CGSize, sizeImage: CGSize) -> CGRect {
let aspect = sizeImage.width / sizeImage.height
let rect: CGRect
if sizeImageView.width / aspect > sizeImageView.height {
let height = sizeImageView.width / aspect
rect = CGRect(x: 0, y: (sizeImageView.height - height) / 2,
width: sizeImageView.width, height: height)
} else {
let width = sizeImageView.height * aspect
rect = CGRect(x: (sizeImageView.width - width) / 2, y: 0,
width: width, height: sizeImageView.height)
}
return rect
}
func getAspectFitFrame(sizeImgView:CGSize, sizeImage:CGSize) -> CGRect {
let imageSize:CGSize = sizeImage
let viewSize:CGSize = sizeImgView
let hfactor : CGFloat = imageSize.width/viewSize.width
let vfactor : CGFloat = imageSize.height/viewSize.height
let factor : CGFloat = max(hfactor, vfactor)
// Divide the size by the greater of the vertical or horizontal shrinkage factor
let newWidth : CGFloat = imageSize.width / factor
let newHeight : CGFloat = imageSize.height / factor
var x:CGFloat = 0.0
var y:CGFloat = 0.0
if newWidth > newHeight{
y = (sizeImgView.height - newHeight)/2
}
if newHeight > newWidth{
x = (sizeImgView.width - newWidth)/2
}
let newRect:CGRect = CGRect(x: x, y: y, width: newWidth, height: newHeight)
return newRect
}
每当我想要一个列的日期范围说员工的AND getdate() BETWEEN fti.effectivestart AND ISNULL(fti.effectiveend, '2050-01-01')
时,我会做这样的事情:
StartDate
有人可以帮我理解差异吗?
谢谢。
答案 0 :(得分:0)
这两个语句都返回一个在某个时间点有效的记录。
首先评估当前时间。这就是getdate()
返回的内容。
评估第二个StartDate
,每行可能不同。
这是你感到困惑的吗?
一对夫妇注意到:
coalesce()
通常(但并非总是)优于isnull()
,因为前者是ANSI标准。cast(getdate() as date)
。between
日期时需要小心。我假设表已设置,因此按预期工作。答案 1 :(得分:0)
两个陈述之间的唯一区别是,一个是与当前日期(getdate()
)进行比较,另一个是与给定日期(StartDate
)进行比较。
也就是说,第一个语句正在验证当前执行日期(现在)是between fti.effectivestart AND ISNULL(fti.effectiveend, '2050-01-01')
而第二个会根据条件StartDate
between fti.effectivestart AND ISNULL(fti.effectiveend, '2050-01-01')
的值