2012-04-03 159 views
1

我有一个带日期时间记录的表格。 我需要选择使用日期或时间的记录。如何区分日期和时间?

比方说,我有这样的格式1/1/2001 13:33:00数据库

我的问题是:如果我输入的日期,时间或两个,我应该获得要么同一天或同一时间行。 我怎样才能达到这个

转换功能CONVERT(VARCHAR(10), Travel.Travel_DateTime, 110) 返回的日期,如果他们的时间是一样的默认00:00:00

+0

请告诉你如何通过日期或时间值.. – 2012-04-03 20:28:37

+0

数据库中列的类型是什么? VARCHAR?如果是这样,你为什么决定不使用内置的日期/时间类型?他们在那里让包括你在内的用户的生活更轻松。 – 2012-04-03 20:36:08

+0

[如何仅从SQL Server datetime数据类型返回日期部分]的可能的重复(http://stackoverflow.com/questions/113045/how-to-return-the-date-part-only-from-a- sql-server-datetime-datatype) – Corbin 2012-04-03 20:54:53

回答

5

(请注意,我假设的MySQL)

只需使用DATETIME功能:

SELECT blah FROM tbl WHERE DATE(some_datetime_field) = '2012-04-02'; 

这将选择任何行,以使some_datetime_field的日期部分为2012年4月4日。

同样的想法适用用时:

SELECT blah FROM tbl WHERE TIME(some_datetime_field) = '14:30:00'; 

因此,要获得所有行的日期是2012年4月5日或时间是下午2:30,你只要将二者结合起来:

SELECT blah FROM tbl WHERE DATE(some_datetime_field) = '2012-04-02' OR TIME(some_datetime_field) = '14:30:00'; 

---编辑---

对于SQL服务器,你应该能够使用:

CONVERT(DATE, some_datetime_field) = '2012-04-02' 

(从How to return the date part only from a SQL Server datetime datatype

+0

非常感谢,但我使用sql server – 2012-04-03 20:47:57

+0

@RasheedKhalilSalem你的问题应该指定那么。我倾向于假设没有指定的问题是MySQL :)。 – Corbin 2012-04-03 20:51:15

+0

非常感谢它的工作 ,我很抱歉没有指定我正在使用sql我认为标签已足够 – 2012-04-03 22:22:47

1

说你逝去的日期和时间l_DATEl_TIME可变..

那么你可以使用下面的查询..

select * from your_table 
where to_char(date_field,'DD/MM/YYYY') = l_DATE 
    or to_char(date_field ,'HH:MI:SS') = l_TIME 

如果您正在使用Oracle数据库作为DBMS,那么你可以使用上面的查询,它应该给你你想要的答案/结果...

+0

非常感谢,但我很感谢使用sql server – 2012-04-03 20:46:13