SQL Server 2005中Query(查询)Date Time(日期时间)
2009-03-28 15:03
676 查看
在浏览本文之前请保证安装好SQL Server 2005。
Introduction
本文主要讲述在SQL Server 2005中Query(查询)Date Time(日期时间)会遇到的问题。
Section 1 - Problem
现在打算select FundHouse table中LastUpdateDate column中date为2008-5-21的records。
在SQL Server 2005中open FundHouse这个table可以看到在LastUpdateDate column下有以下值:
2008-5-21 19:38:36
2008-5-21 19:42:40
2008-5-21 19:43:45
2008-5-23 2:23:03
2008-5-23 2:34:43
New一个Query去select,尝试了以下几种形式:
select * from FundHouse where LastUpdateDate like '2008-5-21'
select * from FundHouse where LastUpdateDate like '2008-5-21%'
select * from FundHouse where LastUpdateDate like 2008-5-21
select * from FundHouse where LastUpdateDate like 2008-5-21%
select * from FundHouse where LastUpdateDate like '2008-5-21 19:38:36'
select * from FundHouse where LastUpdateDate = '2008-5-21 19:38:36'
select * from FundHouse where LastUpdateDate = '2008-5-21'
但第1~6种形式是不能正确把records select出来,只有第7种能正确select出来,这表示这不能用like和%来通配所有时间值。
从以上第5,6种形式可以看到即使具体到秒也不能把record select出来。
Section 2 - Reason
SQL Server 2005的datetime type存储的实际数据是精确到毫秒级的,但现在不确定是否与此有关。
Section 3 - Solution
可以用"<" or ">"或者"between ? and ?"设定范围来取值。
如用prepareStatement的话like ?这个问号不能set一个Date的date type它,因为在SQL Server 2005上测试,如以下两种写法都会select出不对的result:
select * from FundHouse where LastUpdateDate > 2008-5-21
select * from FundHouse where LastUpdateDate < 2008-5-21
经试验,只能用String date type来表示这个时间才能select出正确result,如下这样:
select * from FundHouse where LastUpdateDate > '2008-5-21'
select * from FundHouse where LastUpdateDate < '2008-5-21'
Introduction
本文主要讲述在SQL Server 2005中Query(查询)Date Time(日期时间)会遇到的问题。
Section 1 - Problem
现在打算select FundHouse table中LastUpdateDate column中date为2008-5-21的records。
在SQL Server 2005中open FundHouse这个table可以看到在LastUpdateDate column下有以下值:
2008-5-21 19:38:36
2008-5-21 19:42:40
2008-5-21 19:43:45
2008-5-23 2:23:03
2008-5-23 2:34:43
New一个Query去select,尝试了以下几种形式:
select * from FundHouse where LastUpdateDate like '2008-5-21'
select * from FundHouse where LastUpdateDate like '2008-5-21%'
select * from FundHouse where LastUpdateDate like 2008-5-21
select * from FundHouse where LastUpdateDate like 2008-5-21%
select * from FundHouse where LastUpdateDate like '2008-5-21 19:38:36'
select * from FundHouse where LastUpdateDate = '2008-5-21 19:38:36'
select * from FundHouse where LastUpdateDate = '2008-5-21'
但第1~6种形式是不能正确把records select出来,只有第7种能正确select出来,这表示这不能用like和%来通配所有时间值。
从以上第5,6种形式可以看到即使具体到秒也不能把record select出来。
Section 2 - Reason
SQL Server 2005的datetime type存储的实际数据是精确到毫秒级的,但现在不确定是否与此有关。
Section 3 - Solution
可以用"<" or ">"或者"between ? and ?"设定范围来取值。
如用prepareStatement的话like ?这个问号不能set一个Date的date type它,因为在SQL Server 2005上测试,如以下两种写法都会select出不对的result:
select * from FundHouse where LastUpdateDate > 2008-5-21
select * from FundHouse where LastUpdateDate < 2008-5-21
经试验,只能用String date type来表示这个时间才能select出正确result,如下这样:
select * from FundHouse where LastUpdateDate > '2008-5-21'
select * from FundHouse where LastUpdateDate < '2008-5-21'
相关文章推荐
- SQL Server 2005中Query(查询)Date Time(日期时间)
- SQL Server 2005中Query(查询)Date Time(日期时间)时select不出record的问题
- java 日期/时间运算(LocalDate/Time)
- Android中实现日期时间选择器(DatePicker和TimePicker)
- SQL Server ->> 时间函数: EOMONTH, DATEFROMPARTS, TIMEFROMPARTS, DATETIMEFROMPARTS, DATETIMEOFFSETFROMPARTS
- PHP 日期,时间函数(date,time)
- 批处理date 和 time日期和时间
- oracle_查询date只显示日期不显示时间
- 利用系统日期和时间自动命名文件【%date% %time%】
- android中的ProgressDialog(进度),DatePickerDialog(日期选择)与TimePickerDialog(时间选择)
- Java 8 日期/时间(Date Time)API指南
- 各种杂项组件(3)之--CalendarView(日历视图)、DatePicker/TimePicker(日期、时间选择器)、NumberPicker(数值选择器)
- android—DatePicker 和TimePicker显示日期以及使用TimePickerDialog,DatePickerDialog来专门实现时间选择对话框
- Qt学习(9)——Qt5中的日期(Date)和时间(Time)(3)
- [控件]DatePicker日期,TimePicker时间,Calendar日历,DatePickerDialog弹出的日期,TimePickerDialog弹出的时间
- Android(10):时间与日期TimePicker、DatePicker、模拟时钟(非数字时钟)AnalogcClock
- Android 使用DatePicker以及TimePicker显示当前日期和时间
- Java的日期与时间(十二)java.time.LocalDate
- Java8 日期/时间(Date Time)API指南
- Java日期时间(Date/Time)(附Date.java源码)