Tag: sql server

SQL Server将Varchar转换为date时间

我有这样的date格式:2011-09-28 18:01:00(在varchar),我想将其转换为datetime更改为此格式28-09-2011 18:01:00。 我该怎么做?

SQLselect即将到来的生日

我正在尝试编写一个存储过程来select有即将到来的生日的员工。 SELECT * FROM Employees WHERE Birthday > @Today AND Birthday < @Today + @NumDays 这是行不通的,因为出生年份是生日的一部分,所以如果我的生日是'09 -18-1983',不会在'09-18-2008'和'09-25-2008'之间。 有没有办法忽略年份的date字段,只比较月/日? 这将每星期一上午运行,以提醒pipe理人员即将到来的生日,所以可能会跨越新的一年。 这是我最终创build的工作解决scheme,谢谢Kogus。 SELECT * FROM Employees WHERE Cast(DATEDIFF(dd, birthdt, getDate()) / 365.25 as int) – Cast(DATEDIFF(dd, birthdt, futureDate) / 365.25 as int) <> 0

SQL Server sp_msforeachtable用法只select那些满足某些条件的表

我正在试图写这个查询来查找具有特定值的特定列的所有表。 这是我迄今为止所做的 – EXEC sp_MSforeachtable @command1=' IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=PARSENAME("?",2) AND TABLE_NAME=PARSENAME("?",1) AND COLUMN_NAME="EMP_CODE") BEGIN IF (SELECT COUNT(*) FROM ? WHERE EMP_CODE="HO081")>0 BEGIN SELECT * FROM ? WHERE EMP_CODE="HO081" END END ' 我希望我的内涵很清楚,我只想selectEMP_CODE列所在的那些表,在这些表中我想select那些EMP_CODE='HO081' 。 编辑 – 现在它是这样的。 但是我不能在查询中replace@EMPCODEvariables。 DECLARE @EMPCODE AS VARCHAR(20) SET @EMPCODE='HO081' EXEC sp_MSforeachtable @command1=' DECLARE @COUNT AS INT […]

是否可以使用单个UPDATE SQL语句执行多个更新?

比方说,我有一个列IDB和标题的表。 我需要更改标题列的所有值: 从“a-1”到“a1” 从“a.1”到“a1” 从“b-1”到“b1” 从“b.1”到“b1”。 现在,我正在执行两个UPDATE语句: UPDATE tbl SET title='a1' WHERE title IN ('a-1', 'a.1') UPDATE tbl SET title='b1' WHERE title IN ('b-1', 'b.1') 这完全不是问题,如果表很小,单个语句在一秒钟内完成,只需要执行几条语句。 你可能猜到了 – 我有一个巨大的表来处理(一个语句在大约90秒内完成),我有大量的更新来执行。 那么,是否可以合并更新,以便只扫描一次表格? 或者,在这样的情况下,还有更好的办法。 编辑:请注意,我正在使用的真实数据和我必须执行的数据的更改并不是真的那么简单 – string更长,他们不遵循任何模式(这是用户数据,所以没有假设可以做成 – 可以是任何东西)。

如何使用SQL Server中的select查询创build表?

我尝试使用SYS查询制作50-100个表 SELECT windows_release, windows_service_pack_level, windows_sku, os_language_version FROM sys.dm_os_windows_info OPTION (RECOMPILE); — DEĞİŞİRSE INSERT ETSIN AYNI ISE DEĞİŞMESİN — Gives you major OS version, Service Pack, Edition, and language info for the operating system — SQL Server Services information (SQL Server 2008 R2 SP1 or greater) SELECT servicename, startup_type_desc, status_desc, last_startup_time, service_account, is_clustered, cluster_nodename FROM sys.dm_server_services […]

从函数执行存储过程

我知道这已经被要求死亡,我知道为什么SQL Server不会让你这样做。 但有没有解决方法,除了使用扩展存储过程? 请不要告诉我把我的function转换成一个过程… 所以我真正要问的是:有没有办法从一个函数内运行存储过程? 编辑: 点certificate:有一个方法,但它是如此错误,我不会这样做。 我要把它改成一个存储过程并在其他地方执行。

如何在没有日志的情况下删除SQL表中的大数据?

我有一个大的数据表。 这张表有1000万条logging。 这个查询的最佳方法是什么? Delete LargeTable where readTime < dateadd(MONTH,-7,GETDATE())

SQL Server的utf8 howto?

我已经从MySQL数据库迁移到SQL Server(政治),原始的MySQL数据库使用UTF8。 现在我读了SQL Server 2008不支持utf8的https://dba.stackexchange.com/questions/7346/sql-server-2005-2008-utf-8-collat​​ion-charset ,这是个玩笑吗? SQL Server承载多个数据库,大部分是拉丁文编码的。 由于迁移数据库旨在用于Web发布,我想保持utf8编码。 我是否错过了某些东西,或者是否需要在应用程序级别进行编码/解码?

TSQL电子邮件validation(无正则expression式)

好的,有100万个正则expression式用于validation电子邮件地址,但是如何将一些基本的电子邮件validation集成到SQL Server 2005的TSQL查询中? 我不想使用CLR过程或函数。 只需直接TSQL。 有人已经解决了这个问题吗?

从CTE更新表中的logging

我有以下CTE将给我整个发票的DocTotal。 ;WITH CTE_DocTotal AS ( SELECT SUM(Sale + VAT) AS DocTotal FROM PEDI_InvoiceDetail GROUP BY InvoiceNumber ) UPDATE PEDI_InvoiceDetail SET DocTotal = CTE_DocTotal.DocTotal 现在有了这个结果,我想进入PEDI_InvoiceDetail里的DocTotal值列。 我知道不会工作,我知道我错过了什么,是什么?