使用SQL时间

时间:2010-12-13 17:54:39

标签: sql sql-server sql-server-2008

我有两个字段(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字段。

感谢。

2 个答案:

答案 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'