我有两个字段(StartTime和EndTime)都是varchar字段(它是在我开始之前创建的)
Start Time End time
{t '01:00:00'} {t '21:30:00'}
{t '01:30:00'} {t '09:00:00'}
{t '07:00:00'} {t '11:30:00'}
{t '08:00:00'} {t '19:00:00'}
{t '07:00:00'} {t '11:00:00'}
我正在创建一个查询,仅获取当前时间在开始和结束时间之间的记录。
例如,如果开始时间是凌晨1点,结束时间是晚上9点。而现在的时间是上午11点它将获得该记录。
我不知道如何使用varchar字段。
感谢。
答案 0 :(得分:3)
如果它全部采用相同格式且24小时制,那么它是否正常工作。按照ASCII码......
{t '08:00:00'} <= {t '11:00:00'} <= {t '19:00:00'}
如果您存储的hh:mm:ss
不是{t 'hh:mm:ss'}
08:00:00 <= 11:00:00 <= 19:00:00
如果您遇到遗留代码/数据,则无需等待时间等......
根据评论编辑
如果你想要施放然后从绒毛中提取真实数据
CAST(SUBSTRING('{t ''01:00:00''}', 5, 8) AS time)
--OR
CAST('01:00:00' AS time)
答案 1 :(得分:0)
有另一种方法可以做到这一点,我将在这里编写示例查询。希望它有帮助
SELECT * from TableName
WHERE right(CONVERT(datetime,starttime,103),7) = '01:00AM' and
right(CONVERT(datetime,endtime,103),7) = '09:00PM' and
right(CONVERT(datetime,getdate(),103),7) = '11:00AM'