SQL时间格式

SELECT YEAR(GETDATE())     2013

SELECT MONTH(GETDATE())  6

SELECT DAY(GETDATE())        26

SELECT GETDATE()  2013-06-26 22:55:11.753

SELECT CONVERT(varchar, GETDATE(), 120 )

2013-06-26 22:58:55

SELECT  REPLACE(REPLACE(REPLACE(CONVERT(varchar, GETDATE(), 120 ),'-',''),' ',''),':','')

20130626230144

SELECT  CONVERT(varchar(12) , GETDATE(), 111 )

2013/06/26

SELECT CONVERT(varchar(12) , GETDATE(), 112 )

20130626

SELECT CONVERT(varchar(12) , GETDATE(), 102 )

2013.06.26

不常用:

----------------------------------------------------------------------

SELECT CONVERT(varchar(12) , GETDATE(), 101 )

06/26/2013

(注:101 代表美国标准)

SELECT CONVERT(varchar(12) , GETDATE(), 103 )

26/06/2013

SELECT CONVERT(varchar(12) , GETDATE(), 104 )

26.06.2013

SELECT CONVERT(varchar(12) , GETDATE(), 105 )

26-06-2013

SELECT CONVERT(varchar(12) , GETDATE(), 106 )

26 06 2013

SELECT CONVERT(varchar(12) , GETDATE(), 107 )

06 26, 2013

---------------------------------------------------------------------

获得当前时间

----------------------------------------------------------------------

SELECT CONVERT(varchar(12) , GETDATE(), 108 )

23:05:47

---------------------------------------------------------------------

 

SELECT CONVERT(varchar(12) , GETDATE(), 109 )

06 26 2013 1

SELECT CONVERT(varchar(12) , GETDATE(), 110 )

06-26-2013

SELECT CONVERT(varchar(12) , GETDATE(), 113 )

26 06 2013 2

SELECT CONVERT(varchar(12) , GETDATE(), 114 )

23:08:02:100

----------------------------------------------------------------------

昨天 

select convert(varchar(10),getdate() - 1,120)

明天

select convert(varchar(10),getdate() + 1,120)

最近七天

select  >= convert(varchar(10),getdate() - 7,120)

随后七天

select  <= convert(varchar(10),getdate() + 7,120) and 时间字段 >= 时间字段

--------------------------------------------------------

convertdateadd函数结合使用就可以了。

--------------------------------------------------------

datediff(day,时间列,getdate())

--------------------------------------------------------


1.只要日期部分,时间部分不要

select convert(varchar(10),getdate(),120)

2.以下日期SQL:

上月

select  month(时间字段) = month(getdate()) - 1

本月

select  month(时间字段) = month(getdate())

下月

select * from tb where month(时间字段) = month(getdate()) + 1

本周

select  datediff(week , 时间字段 ,getdate()) = 0

上周

select  datediff(week , 时间字段 ,getdate()) = 1

下周

select  datediff(week , 时间字段 ,getdate()) = -1

--------------------------------------------------------

昨天:dateadd(day,-1,getdate())

明天:dateadd(day,1,getdate())

上月:month(dateadd(month, -1, getdate()))

本月:month(getdate())

下月:month(dateadd(month, 1, getdate())) 

### SQL时间格式的处理方法 在 SQL 中,可以通过多种方式对时间数据进行格式化和处理。以下是几种常见的方法及其示例。 #### 1. 使用字符串操作函数实现日期格式转换 如果数据库中的日期是以字符形式存储的(例如 `"xxxx年xx月xx日"`),可以利用 `SUBSTRING` 和 `CONCAT` 函数将其转换为目标格式 `"yyyy-mm-dd"`。以下是一个具体的例子: ```sql SELECT CONCAT( SUBSTRING(时间, 1, 4), '-', -- 提取年份部分并加上 "-" SUBSTRING(时间, 6, 2), '-', -- 提取月份部分并加上 "-" SUBSTRING(时间, 9, 2) -- 提取日部分 ) AS 标准化时间 FROM 日期示例; ``` 这种方法适用于原始数据为固定长度字符串的情况[^1]。 --- #### 2. 利用内置的时间函数 许多数据库管理系统提供了专门用于时间和日期的操作函数。例如,在 MySQL 或 PostgreSQL 中,可以使用 `STR_TO_DATE()` 将自定义格式的字符串解析为标准日期类型;或者使用 `DATE_FORMAT()` 对已有的日期字段重新格式化。 ##### 示例:将非标准日期转为标准日期 假设有一列名为 `custom_date` 的数据格式为 `"YYYY年MM月DD日"`,则可以用如下语句完成转换: ```sql SELECT STR_TO_DATE(custom_date, '%Y年%m月%d日') AS standardized_date FROM your_table_name; ``` 此功能允许更灵活地处理各种输入格式[^4]。 --- #### 3. 防止因动态拼接带来的安全风险 当涉及外部传入参数时,务必注意防范 **SQL 注入攻击**。推荐的做法是采用预编译语句以及绑定变量代替直接嵌套用户输入的内容。下面给出一个基于 ASP.NET Razor 平台的例子展示如何正确传递条件值给查询逻辑而不暴露潜在漏洞: ```csharp txtUserId = getRequestString("UserId"); txtSQL = "SELECT * FROM Users WHERE UserId = @0"; db.Execute(txtSQL, txtUserId); ``` 上述片段展示了通过占位符机制规避非法篡改的可能性[^3]。 --- #### 4. 统计分析场景下的时间分组 对于需要按天统计某些指标的应用场合来说,则可能需要用到组合多个聚合运算符与提取特定组件的功能一起工作。比如计算某个月每天提交了多少题目练习记录数可参照下述写法: ```sql SELECT DAY(date) AS day, COUNT(question_id) AS question_cnt FROM question_practice_detail WHERE YEAR(date) = 2021 AND MONTH(date) = 8 GROUP BY DAY(date); ``` 这里我们分别调用了 `DAY()`, `YEAR()`, 及 `MONTH()` 来限定范围并对结果加以分类汇总。 --- ### 总结 综上所述,针对不同需求可以选择合适的策略来进行 SQL 时间格式的相关操作。这不仅限于简单的显示调整还扩展到了安全性考量及复杂业务逻辑的支持等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值