一个关于日期的难题 在sqlserver中存储日期,只能存成datetime格式,如果只存日期,它会在后面加上讨厌的00:00:00,,请问怎么样才能避免这种情况? ,请帮忙想个办法在存储的时候不存储那个00:00:00。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 datetime 是日期时间型的,存在表里的时候是无法弃掉,不过在取出的时候可以做处理,convert(char(10),'字段名',121) 取出的格式如:yyyy-mm-dd convert(char(12),'字段名',121) select convert(varchar(10),getdate(),120) convert(varchar(),getdate,120)有N种日期格式供你选择,总有一种适合你~具体例子:SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AMSELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16SELECT CONVERT(varchar(100), GETDATE(), 12): 060516SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AMSELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AMSELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AMSELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49SELECT CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700SELECT CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827SELECT CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AMSELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM 可以考虑存为字符串,字符串和日期转换还是比较容易的,但是要注意默认语言。或者用上面提到的方法。如果要存为字符串,请格外注意如下两个例子:select datediff(dd,'2008-06-01','2008-07-02')/*----------- 31(所影响的行数为 1 行)*/select datediff(dd,2008-06-01,2008-07-02)/*----------- -2(所影响的行数为 1 行)*/后者没有单引号,2008-06-01=2001,2008-07-02=1999,实际上是用离1900-01-01那天1999天的日期减去离1900-01-01那天2001天的日期,所以结果为-2。 可以考虑存为字符串,字符串和日期转换还是比较容易的select datediff(dd,2008-06-01,2008-07-02)select datediff(dd,1900-01-01,2008-07-02)select datediff(dd,1900-01-01,2008-06-01)----------- -2(所影响的行数为 1 行) ----------- 101(所影响的行数为 1 行) ----------- 103(所影响的行数为 1 行) 这个sql语句怎么写啊 存储过程,按指定参数查询 如何在触发器里面写insert并保存后的事件 Developer与Enterprise的区别 sql2000 内存问题 怎么不能把00作为默认值? 先给100分参与分,如果谁能解决单独给他100分,绝不食言! 请问:为何我在用ACCESS新建*.adp项目时总提示sql server连接错误呢 关于SQL查询的结果里有重复数据的问题,望高手帮忙解决!!!!!! 在用存储过程插入数据的问题。 数据传递有问题??? 请教各位专家. 看看这个触发器哪错了
select convert(varchar(10),getdate(),120)
有N种日期格式供你选择,总有一种适合你~
具体例子:
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06
SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06
SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06
SELECT CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46
SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06
SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16
SELECT CONVERT(varchar(100), GETDATE(), 12): 060516
SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
SELECT CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516
SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
SELECT CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
SELECT CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
SELECT CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
或者用上面提到的方法。
如果要存为字符串,请格外注意如下两个例子:
select datediff(dd,'2008-06-01','2008-07-02')/*-----------
31(所影响的行数为 1 行)
*/
select datediff(dd,2008-06-01,2008-07-02)
/*
-----------
-2(所影响的行数为 1 行)
*/
后者没有单引号,2008-06-01=2001,2008-07-02=1999,
实际上是用离1900-01-01那天1999天的日期减去离1900-01-01那天2001天的日期,所以结果为-2。
-2(所影响的行数为 1 行)
-----------
101(所影响的行数为 1 行)
-----------
103(所影响的行数为 1 行)