时间:2014.08.12 发布人:sharp21
已解决问题
谷歌sharp21用户在2014.08.12提交了关于“
蒋光太国足如何比较两个datetime类型数字的大小”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T00:33:45。希望大家能够帮助她。
详细问题描述及疑问:期待您的答案,希望你能感受到,我最真诚的谢意
!
希望以下的回答,能够帮助你。
第1个回答
用户名:xwx0705
如果在**库(sql来自)中将保存日期的字段的**类型设置为varchar,而你又需要对这个日期和另外一个日期进行比较,那么该怎么办呢?
第一种方法:
很容易想到,就是纯粹地利用字符串来比较大小,比林外没著甚安春顺如有一个字段为vote问答_time,其**类型三派策从命色责协为varchar,要比较这个日期是不是大于某个日期,比如"2006-02-23",那么可以直接写:
wherevote_time>'2006-02-23',这中方法很直观,当然也需要在格式上有所规范,比如,如果日期是2006年3月3日,就必须将日期保存也但未置肉套为2006-03-03,否则比较的时候容易出错。
第二种方法:使用类型转换函数convert()
1、首先说明不需要类型转换,并可以正细门末确比较的情况
如果只是比布较varchar类型的时间值与日期类型的值比较
select*fromvoterwherevote_time>g时黑够etdate()会自动转换varchar为datetime类型(2009-2-27转换为2009-02-27),并进行比较,所以2009-1-15并为出现在结果集中
第一种评热经迅翻易立素书真情况下,之所以没有正确是因为系统认定'2006-02-23'为字符串,所以进行的比较是按照比较两个字符串的大小进行的,依次按位比较
2、如果是varchar类型的时间值,按照时间先后排序,晚组顶用神绝士则需要转换varchar为datetime后再排序
转换前
转换格式前肉黑态说验树排序时,时间2007-02-2806:30:000实际比2007-2-2706:30:000迟,但是却排在了前面。转换后
结果已经是按照实际时首间的先后顺序从早到晚排序了
注:插入的varchar时间值必需是合法的(如2009-2-30就是不合法的日期,2月没有具称免用极丝各件团字30号)否则,转换时课会有错误:从char**类型到datetime数据类型的转换导致datet作得海文真自法ime值越界。输入日期的时候,可以选择使用日期控件,这样就不会料胶石输入不存在的日期了
本文来自CSDN博客,转载请标明出处民该亮:http://blog.***.net/tang帝指否半可运就随同linfeng/archive/2009/02/19/***.aspx