[ANSWER]
谢谢大家!解决以下问题的代码是:
SELECT ID
FROM Schedule
WHERE (SUBSTRING(Time, 1, 2) = DATEPART(hh, GETDATE()))
如何在SQL Server CE中选择前两个字符?
例如:
+-----+-----------+------------+
+ Day + Time + ID +
+-----+-----------+------------+
+ 1 + 08:00:00 + A1 +
+ 1 + 09:00:00 + A2 +
+ 1 + 09:30:00 + A3 +
+ 1 + 10:15:00 + A4 +
+-----+-----------+------------+
Time
列是nvarchar
类型。
然后,我想仅根据实际时间选择ID
,例如只选择08
中的08:00:00
部分。我怎么能这样做?
答案 0 :(得分:8)
SUBSTRING在CE中可用 - http://msdn.microsoft.com/en-us/library/aa275646(SQL.80).aspx
SUBSTRING ( expression , start , length )
答案 1 :(得分:2)
SQL Standard方法由语法图给出:
<character substring function> ::=
SUBSTRING <left paren> <character value expression> FROM <start position>
[ FOR <string length> ] [ USING <char length units> ] <right paren>
因此,在这个例子中:
SELECT SUBSTRING(Time FROM 1 FOR 2) FROM AnonymousTable;
某些DBMS(Oracle和那些模拟Oracle)提供了一个SUBSTR()函数:
SELECT SUBSTR(Time, 1, 2) FROM AnonymousTable;
1
是起始偏移量,从1开始计算,2
是长度(不是结束偏移量,尽管它们对于此示例是相同的,以及任何其他起始位置1)。
您的特定DBMS可能还有其他方法。例如,使用Informix,您可以编写:
SELECT Time[1,2] FROM AnonymousTable;
这次,下标是开始和停止位置。
Informix支持所有这三个。我不知道任何其他使用下标符号的DBMS。
答案 2 :(得分:1)
你的意思是这样吗?
SELECT LEFT(Time, 2) From Table