SQL里的日期格式是怎么写
我在用SQL语句进行日期查询时,总是得不到想要的结果
问题就出在日期格式不正确,请各位大虾指教,小弟在此拜谢
问题点数:92、回复次数:19Top
1 楼leolan(史留香)回复于 2004-04-02 18:37:43 得分 5
SQL Server 可以辨識採用下列格式括在單引號 (') 中的日期與時間資料:
文數字的日期格式 (例如 'April 15, 1998')
數值的日期格式 (例如 '4/15/1998'、'April 15, 1998')
未分隔的字串格式 (例如 '19981207'、'December 12, 1998')
/**************************************************************
另,可以使用 Convert() 函數將時間字符串轉換成你想要的格式Top
2 楼Leftie(左手,为人民币服务)回复于 2004-04-02 18:43:59 得分 7
select * from tablename where 日期字段='2004-04-02'Top
3 楼popraincn(村上飞雪)回复于 2004-04-02 19:05:20 得分 5
使用 Convert() 函数转换成想要的就格式就可以比较了
关于convert()自己可以看看msdn
比如:
convert(char(10),getdate(),111)
就可以把getdate()转换成:2004/04/02的样式了Top
4 楼houfuzhu(**追^_^梦**)回复于 2004-04-02 19:10:38 得分 0
我在用SQ查询时也是在日期两头加上单引,但就不行啊
请问那位有调试通过的代码找个来让我参考!参考
在下感激不尽!
小弟在线等待Top
5 楼popraincn(村上飞雪)回复于 2004-04-02 19:25:09 得分 7
'Trim(Mask1.Text)=2004/01/01
'Trim(Mask2.Text)=2004/01/04
'jsr为数据库里一日期(YMD)字段
select * from table where convert(char(10),jsr,111)>='" & Trim(Mask1.Text) & "' and convert(char(10),jsr,111)<='" & Trim(Mask2.Text) & "'
Top
6 楼MSTOP(陈建华)回复于 2004-04-02 19:31:03 得分 6
'2003/4/5'
'2003-2-2'
'2003年2月2日'Top
7 楼houfuzhu(**追^_^梦**)回复于 2004-04-02 21:06:31 得分 0
村上飞雪,请问convert的char(10)是什么意思,还有
参数111是什么意思Top
8 楼paoluo(一天到晚游泳的鱼)回复于 2004-04-02 21:26:13 得分 6
convert的语法 convert(data_type,expression[,style])
char(10)是定义数据类型及长度。
参数111是将返回的日期字符串的日期时间格式为“yy/mm/dd”
其余的参数对应什么格式在SQL的书上可以看到的。Top
9 楼paoluo(一天到晚游泳的鱼)回复于 2004-04-02 21:30:00 得分 5
我的程序里一个比较简单的SQL语句,给你参考一下:
select * from tblorder where OrderDate>'2004/03/05'Top
10 楼houfuzhu(**追^_^梦**)回复于 2004-04-02 22:18:20 得分 0
谢谢各,最近7天后结贴
在这期间,希望各位大虾发表更多
例子以供小弟参考,小弟在此谢谢!!!Top
11 楼zjcxc(邹建)回复于 2004-04-02 22:58:50 得分 8
--用datediff就最方便了.
--比较年份是否相同
where datediff(year,日期1,日期2)=0
--比较日期是否相同,精确到天
where datediff(day,日期1,日期2)=0
--比较日期是否相同,精确到分钟
where datediff(minute,日期1,日期2)=0
Top
12 楼zjcxc(邹建)回复于 2004-04-02 22:59:12 得分 10
DATEDIFF
返回跨两个指定日期的日期和时间边界数。
语法
DATEDIFF ( datepart , startdate , enddate )
参数
datepart
是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
日期部分 缩写
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate
是计算的开始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。
因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。
如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049(默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。
有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。
enddate
是计算的终止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。
返回类型
integer
注释
startdate 是从 enddate 减去。如果 startdate 比 enddate 晚,返回负值。
当结果超出整数值范围,DATEDIFF 产生错误。对于毫秒,最大数是 24 天 20 小时 31 分钟零 23.647 秒。对于秒,最大数是 68 年。
计算跨分钟、秒和毫秒这些边界的方法,使得 DATEDIFF 给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的 datepart 边界数。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之间的星期数是 1。
示例
此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
Top
13 楼zjcxc(邹建)回复于 2004-04-02 23:00:43 得分 7
用datediff进行日期比较还有一个好处,就是:
它的第二个,第三个参数,如果不是日期型的话,它会自动进行转换
即你可以做这样的比较:
where datediff(day,'20030101','2003-1-1')=0
前后两种日期格式不同,但结果照样正确.Top
14 楼Lionking1027(自由之子)回复于 2004-04-02 23:09:39 得分 6
'20041101'Top
15 楼diekiss(峯)回复于 2004-04-02 23:46:49 得分 5
如果是Access的数据库要写成 #2004-04-03# 的形式,Top
16 楼hobowang(大豆)回复于 2004-04-03 00:40:33 得分 5
#2004-04-03#
这样的话好象SQL SERVER 和ACCESS通用Top
17 楼whachun(jakly)回复于 2004-04-03 09:22:40 得分 5
如:
日期格式:yyyy-MM-dd
Select * from tTableName Where Convert(varchar(10),cDateField,21) Between dBeginDate And dEndDateTop
18 楼whachun(jakly)回复于 2004-04-03 09:23:35 得分 5
根据日期格式,你可以改动21这个数字Top
19 楼houfuzhu(**追^_^梦**)回复于 2004-04-03 18:32:43 得分 0
谢谢各位大虾的指教,小弟这就结贴Top




