Конвертировать varchar 114 на datetime равно чему? - PullRequest
2 голосов
/ 02 сентября 2010

У меня проблемы с установкой условия равенства в поле даты и времени после преобразования его в hh:mm:ss.mmm:

select top 1 convert(varchar, timestamp, 114) from TEST_TABLE

/* returns a single entry of 11:33:35:000 */

Затем я хочу найти все записи с этой отметкой времени:

select * from TEST_TABLE where convert(varchar, timestamp, 114) = '11:33:35.000'

/* returns nothing */

Я также попробовал формат '11:33:35' (без ммм) на RHS знака равенства, не повезло.Я выполняю эти запросы в MS SQL Server Management Studio 2008, если это имеет значение.Но мне нужен способ, который работает кроссплатформенно, так как в конечном итоге я запускаю Perl-скрипт для выполнения запроса через модуль DBI.

Ответы [ 2 ]

2 голосов
/ 02 сентября 2010

Вы сравниваете строки, поэтому они должны быть одинаковыми:

select * from TEST_TABLE where convert(varchar, timestamp, 114) = '11:33:35:000'

Обратите внимание на двоеточие вместо точки в строковом литерале.

2 голосов
/ 02 сентября 2010

11:33:35:000 - это не то же самое, что 11:33:35.000

попробовать

select * 
from TEST_TABLE 
where convert(varchar, timestamp, 114) = '11:33:35:000'

Я предпочитаю стиль 108 сам

select convert(varchar, GETDATE(), 108)

15: 29: 00 ** 1011

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...