在将日期和时间组合到DATETIME
时遇到麻烦。我已有一个包含数据的表,因此无法将其更改为Datetime2
。
DECLARE @t1 TABLE(StartDate DATE, StartTime Time)
INSERT INTO @t1
VALUES('2018-02-28','08:00:00')
SELECT
CAST(CONCAT(StartDate, ' ', StartTime) AS DATETIME)
FROM @t1
显示的错误是:
从字符串转换日期和/或时间时转换失败。
答案 0 :(得分:2)
强制转换失败,因为datetime
数据类型的时间成分比time
数据类型的精度低,如this page所述,它是各种日期的有用参考和SQL Server提供的时间类型。您也可以在该页面上看到,SQL Server具有datetime2
数据类型,可以提供更高的精度。如果您在cast
中使用过该功能,我认为您不会遇到问题。
戈登的解决方案是一个很好的解决方案,因为它一开始就无需处理字符串的转换。请注意,将date
和time
组合成datetime
可能会导致精度下降。有关使用datetime2
保留原始值精度的解决方案,请参见Stack Exchange DBA网站上的this question。
答案 1 :(得分:0)
不要 function findMatches(wordToMatch, movies) {
return movies.filter(film => {
console.log(film.Title, wordToMatch);
console.log(film.Title.toLowerCase().includes(wordToMatch));
return film.Title.toLowerCase().includes(wordToMatch) || film.Year.toLowerCase().includes(wordToMatch);
});
}
function displayMatches(movies, value) {
const matchArray = findMatches(value.toLowerCase(), movies);
const html = matchArray.map(film => {
const regex = new RegExp(value, 'gi');
const titleName = film.Title.replace(regex, `<span class="hl">${value}</span>`);
const yearName = film.Year.replace(regex, `<span class="hl">${value}</span>`);
return `
<li>
<span class="name">${titleName}, ${yearName}</span>
<span class="population">${film.imdbID}</span>
</li>
`;
}).join('');
suggestions.innerHTML = html;
}
const searchInput = document.querySelector('.search');
const suggestions = document.querySelector('.suggestions');
searchInput.addEventListener('keyup', () => {
const endpoint = 'https://www.omdbapi.com/?apikey=63f88e02&s=' + searchInput.value;
fetch(endpoint)
.then(blob => blob.json())
.then(data => {
console.log('response from API');
console.log(data);
if (!data.Error) displayMatches(data.Search, searchInput.value);
});
});
。只需添加,但它们都必须为concat()
:
datetime