// Helpers
var iframeClickedLast;
function eventFromIframe(event) {
var el = event.target;
return el && el.tagName && el.tagName.toLowerCase() == 'iframe';
}
function getIframeSrc(event) {
var el = event.target;
return eventFromIframe(event) ? el.getAttribute('src') : '';
}
// Events
function windowBlurred(e) {
var el = document.activeElement;
if (el.tagName.toLowerCase() == 'iframe') {
console.log('Blurred: iframe CLICKED ON', 'SRC:', el.getAttribute('src'), e);
iframeClickedLast = true;
}
else {
console.log('Blurred', e);
}
}
function windowFocussed(e) {
if (iframeClickedLast) {
var el = document.activeElement;
iframeClickedLast = false;
console.log('Focussed: iframe CLICKED OFF', 'SRC:', el.getAttribute('src'), e);
}
else {
console.log('Focussed', e);
}
}
function iframeMouseOver(e) {
console.log('Mouse Over', 'SRC:', getIframeSrc(e), e);
}
function iframeMouseOut(e) {
console.log('Mouse Out', 'SRC:', getIframeSrc(e), e);
}
// Attach Events
window.addEventListener('focus', windowFocussed, true);
window.addEventListener('blur', windowBlurred, true);
var iframes = document.getElementsByTagName("iframe");
for (var i = 0; i < iframes.length; i++) {
iframes[i].addEventListener('mouseover', iframeMouseOver, true);
iframes[i].addEventListener('mouseout', iframeMouseOut, true);
}
如果运行上面的查询,结果为'Jun 1',所以月份的前三个字母,空格和日期的第一个数字。但是,如果我用一个硬编码的值(如下面的查询)替换getdate()函数,结果会发生巨大变化。
select convert(varchar(5),getdate(), 100)
如果结果必须是月份的前三个字符和两个数字日期且没有空格
,那么如何编写查询?答案 0 :(得分:1)
试试这个
DECLARE @date DATE;
set @date = '2018-05-01 00:00:00.000';
select convert(varchar(6),@date, 100);
答案 1 :(得分:1)
在format()
之前,有datename()
。这应该做你想要的:
select left(datename(month, getdate()), 3) + right('00' + datename(day, getdate()), 2)
您也可以使用您的方法,但需要替换空格:
select replace(replace(convert(varchar(6), cast('2018-05-01 00:00:00.000' as date), 100), ' ', '0'), ' ', '0')
答案 2 :(得分:0)
这是因为您传递了varchar
或string
类型日期'2018-05-01 00:00:00.000'
,例如:
select left('2018-05-01 00:00:00.000', 5)
如果您想要相同的结果,则需要将它们转换为合理的格式
select convert(varchar(6),cast('2018-06-01' as date), 100)
我误读了 last 行,如果你不想要空格,那么只需简单地使用replace()
select replace(replace(convert(varchar(6), cast('2018-06-01' as date), 100), ' ', '0'), ' ', '0')
答案 3 :(得分:0)
您可以将时间戳转换为日期,然后以您喜欢的方式格式化:
select format(cast('2018-05-01 00:00:00.000' as date), 'MMMdd')