How to Fix the “datediff function resulted in an overflow” Error in SQL Server

This article provides a solution to a problem you may occasionally encounter while using the DATEDIFF() function in SQL Server.

If you encounter the following error:

The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is too large. Try to use datediff with a less precise datepart.

It’s because the return value is too large. The DATEDIFF() function returns its result as an int data type. The reason you got this message is that the return value is too big for the int data type. Fortunately there’s an easy way to fix this.

Continue reading

How to Replace NULL with Another Value in SQL Server – ISNULL()

When querying a SQL Server database, there may be times where you don’t want null values to be returned in your result set. And there may be times where you do want them returned. But there may also be times where you do want them returned, but as a different value.

That’s what the ISNULL() function is for.

ISNULL() is a T-SQL function that allows you to replace NULL with a specified value of your choice.

Continue reading

MySQL Group_Concat() vs T-SQL String_Agg()

One of the T-SQL functions introduced in SQL Server 2017 is the STRING_AGG() function. This is basically the equivalent of MySQL’s GROUP_CONCAT() function – it lets you return query results as a delimited list, rather than in rows.

But there are a few minor differences between the two functions.

This article explores some of the main syntax differences between these functions.

Continue reading

The SQL Server Equivalent to GROUP_CONCAT()

Before SQL Server 2017 came along, there wasn’t a T-SQL equivalent of the MySQL GROUP_CONCAT() function. This function allows you to return a result set as a comma-separated list, as opposed to listing each row as a separate row (as with a normal result set).

Prior to SQL Server 2017, if you wanted to put your result into a comma separated list, you’d need to find a workaround, perhaps using a combination of STUFF() and FOR XML PATH().

However, T-SQL now has the STRING_AGG() function which is available from SQL Server 2017. This function does pretty much the same thing as MySQL’s GROUP_CONCAT() function (with some minor differences).

Continue reading

How to Return Query Results as a Comma Separated List in SQL Server – STRING_AGG()

Starting with SQL Server 2017, you can now make your query results appear as a list. This means you can have your result set appear as a comma-separated list, a space-separated list, or whatever separator you choose to use.

While it’s true that you could achieve this same effect prior to SQL Server 2017, it was a bit fiddly.

Transact-SQL now has the STRING_AGG() function, which concatenates the values of string expressions and places separator values between them. This works in much the same way to MySQL’s GROUP_CONCAT() function.

This article provides examples that demonstrate the T-SQL STRING_AGG() function.

Continue reading

How to Return the Number of Rows in a Query Result in SQL Server

When working with databases, sometimes you want to find out how many rows will be returned by a query, without actually returning the results of the query. Or sometimes you might just want to find out how many rows are in a given table.

In SQL Server, you can use T-SQL‘s COUNT() function to return the number of rows that would be returned in a query.

Continue reading

6 Ways to Check the Size of a Database in SQL Server using T-SQL

If you’re using a GUI tool, such as SSMS to manage your databases, you can easily check the size of your database by clicking your way through the GUI (right-click the database, point to Reports, then Standard Reports, and then click Disk Usage).

However, if you prefer to use T-SQL to manage your databases, you’ll need to run a query that returns this information.

This article presents six ways to check the size of a SQL Server database using T-SQL.

Continue reading

How to Add a Log File to a SQL Server Database (T-SQL)

When you create a database in SQL Server using the default options, one data file and one log file are created. The data file stores the data and database objects (such as tables, views, stored procedures, etc). The log file stores the information that is required to recover all transactions in the database. If you have a growing database, you may find yourself in the situation where you need to add a new log file (and/or data file).

Just as you can add more data files to an existing database in SQL Server, you can also add more log files. However, the syntax is slightly different depending on whether you’re creating a data file or a log file. Adding a data file requires ADD FILE while adding a log file requires ADD LOG FILE.

This article demonstrates how to use T-SQL to add a log file to an existing database in SQL Server.

Continue reading

How to Add a Filegroup to a SQL Server Database (T-SQL)

At a minimum, a SQL Server database has two operating system files; the data file, and the log file.

The data file holds the actual data in the database, as well as objects such as tables, indexes, stored procedures, and views. The log file contains the information that is required to recover all transactions in the database.

When you create a database using the default options, both of these files are created. These files are created in the primary filegroup. This filegroup contains the primary data file and any secondary files that are not put into other filegroups. So the primary filegroup is the default filegroup (unless it’s changed by using the ALTER DATABASE statement).

When you create multiple data files, you also have the option of grouping them into a user-defined filegroup. This allows you to group files logically into their own filegroup that you created. This filegroup will then exist in addition to the primary filegroup. Database objects will remain will remain within the primary filegroup.

This article demonstrates how to create a user-defined filegroup and add some data files to it.

Continue reading

How to Add a Data File to a SQL Server Database (T-SQL)

In SQL Server, databases store their data and objects (such as tables, views, stored procedures, etc) in files. When you create a database using the default options, one data file and one log file are created. However, you’re not restricted to just one of each file. You can add data files (and log files) to a database at a later date if required.

This article contains examples of using T-SQL to add a data file to an existing database in SQL Server.

Continue reading